android - 如何检测用户何时滚动到 ListView 顶部并通过 ListView 传递触摸(如果是)?

标签 android android-listview

在 Android 中,如何检测用户何时已经滚动到 listView 的顶部并在屏幕上向下拖动,即使他已经到达 ListView 的顶部,然后传递此通过 ListView 触摸父 ViewGroup

最佳答案

以下代码 fragment 将帮助您检测 ListView 的顶部过度滚动以及下方过度滚动,

listView.setOnTouchListener(new OnTouchListener() {

            private static final float OVERSCROLL_THRESHOLD_IN_PIXELS = 100;

            private float downY;

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int firstVisibleItem = listView.getFirstVisiblePosition();
                int totalItemCount = listView.getCount();
                int visibleItemCount = listView.getChildCount();
                boolean onTop = firstVisibleItem == 0 && listView.getChildAt(0) != null && listView.getChildAt(0).getTop() == 0;
                boolean onBottom = firstVisibleItem + visibleItemCount == totalItemCount && listView.getChildAt(visibleItemCount-1).getBottom() == listView.getHeight();

                if(onTop || onBottom) {
                    switch(event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        downY = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        float deltaY = event.getY() - downY;
                        if(onTop && deltaY > OVERSCROLL_THRESHOLD_IN_PIXELS) 
                        {

                            // Top overscroll
                        }
                        if(onBottom && -deltaY > OVERSCROLL_THRESHOLD_IN_PIXELS) {
                            // Bottom overscroll
                        }
                        break;
                    }
                }

                return false;
            }
        });

关于android - 如何检测用户何时滚动到 ListView 顶部并通过 ListView 传递触摸(如果是)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23651900/

相关文章:

java - ListView 的 onclicklistener

android - ActionBar 和 ListView 行之间的空间

android - ListView 减慢了 ViewPager 的滑动速度

java - 如何为 ListView 中的项目设置图像?

java - 如何仅在某些情况下设置 Activity 无历史参数?

android - Material Design 两行列表

android - 我在 ListView 的 getView() 中将 textview 的 VISIBILITY 设置为 VISIBLE - 它对于下一行也保持可见。怎么解决这个问题呢?

android - 如何为每个单元测试获取我的应用程序类的新实例?

android - 带动画的 fragment 交易使谷歌地图变黑

android - 副作用问题 - Jetpack Compose 中的 LaunchedEffect 和 SideEffect