【问题标题】:firstVisibleItem, visibleItemCount, totalItemCount do not change even Scroll event happenedfirstVisibleItem、visibleItemCount、totalItemCount 即使发生 Scroll 事件也不会改变
【发布时间】:2015-05-07 10:15:01
【问题描述】:

我有一个包含 Listview 的 ScrollView,但是即使我滚动 listview,onscroll() 方法中的三个参数也不会改变,它们保持与初始状态相同。

这是我的布局

还有我处理滚动事件的代码,注意 contentlist 是列表视图而不是滚动视图。

但是,正如您在 logcat 中看到的那样,即使我四处滚动也没有任何变化,可见项目数应该只有 两个

不知道是不是因为listview的高度导致了这个问题?

谢谢

【问题讨论】:

    标签: android android-layout listview android-scrollview


    【解决方案1】:

    首先,我不明白为什么您在 ScrollView 中保留了 ListView。

    您不应该将 ListView 放在 ScrollView 中,因为 ListView 类实现了自己的滚动,并且它只是不接收手势,因为它们都由父 ScrollView 处理。

    但是如果你仍然需要在 ScrollView 中使用 ListView ,你可以在 ListView 中添加触摸监听器并像这样禁用父 ScrollView 的触摸事件..

    contentList.setOnTouchListener(new OnTouchListener() {
        // Setting on Touch Listener for handling the touch inside ScrollView
        @Override
        public boolean onTouch(View v, MotionEvent event) {
        // Disallow the touch request for parent scroll on touch of child view
        v.getParent().requestDisallowInterceptTouchEvent(true);
        return false;
        }
    });
    

    希望对您有所帮助.. :)

    【讨论】:

    • 谢谢兄弟,正如你所说,将listview放入滚动视图时会导致问题,特别是当我在xml中硬编码设置listview的高度时,它会使可见项和第一个可见项不正确,我认为是因为我错误地设置了布局,1.滚动事件被滚动视图吸收了 2.列表视图太高了,因此 android 将那些不应该被设置为“可见”的元素设置为
    【解决方案2】:

    ScrollView 中使用ListView 总是会导致问题。为什么不在SwipeRefreshLayout 中使用ListView 并使用addHeaderView() 在其上方显示您的LinearLayout

    【讨论】:

    • 谢谢兄弟,你是对的,将列表视图放在滚动视图中确实会导致问题/
    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 2021-10-04
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多