android - 检测 scrollView 何时滚动

标签 android scrollview

我正在尝试检测 ScrollView 何时完成滚动,以便我可以稍微修改它的位置。在我使用 ACTION_UP 检测用户何时抬起手指之前,但后来我意识到这不允许我使用“flinging”,因为它会在完成之前修改滚动。

有什么方法可以检测 ScrollView 何时完成滚动?或者像ListView一样检测它的滚动状态?

关于如何实现这个的任何其他想法?

谢谢。

最佳答案

我根据 Jourbac 评论实现了一个解决方案。

问候

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ScrollView;

public class MyScrollView extends ScrollView {

    private static final int WHAT = 1;

    class MyHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if(!hasMessages(WHAT)) {
                Log.i("TestScroll", "Last msg!. Position from " 
                                    + msg.arg1 + " to " + msg.arg2);                
            }
        }
    }

    private Handler mHandler = new MyHandler();

    public MyScrollView(Context context) {
        super(context);
    }

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        final Message msg = Message.obtain();
        msg.arg1 = oldt;
        msg.arg2 = t;
        msg.what = WHAT;
        mHandler.sendMessageDelayed(msg, 500);
    }

}

关于android - 检测 scrollView 何时滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3095879/

相关文章:

android - 强制参数为可以传递给方法的特定类型

android - 大包装名称问题

java - addView 到 ScrollView 中的线性布局在刷新时被删除

Android,当我点击编辑文本时如何以编程方式滚动 ScrollView

Android的cardView + RecyclerView布局中的滚动功能

android - 了解 SurfaceHolder 概念

android - 在 Android 应用程序中 "R.java"的作用是什么?

ios - 是否可以有一个不覆盖整个屏幕的 ScrollView ?

android - 如何在选项卡式应用程序中替换 LinearLayout 下的 fragment

SwiftUI - 如何在点击时使组件在水平 ScrollView 中居中?