【问题标题】:Why nested list views are not scrolling properly in Android?为什么嵌套列表视图在 Android 中不能正确滚动?
【发布时间】:2015-10-08 06:01:48
【问题描述】:

我正在制作一个聊天应用程序。问题是我的列表视图没有滚动。 首先,有一个包含列表视图的主聊天 UI,它可以正常滚动,主聊天 UI 图像是

但是有一个视图在某个事件发生时可见,并且该视图是包含列表视图的相对布局,并且图像是

发生的事件越多,在当前可见视图中动态添加的行越多,并且此列表也可以正常滚动,但是当单击包含黑色背景的行之一时,我们会遇到问题,它会展开,并且还包含一个列表视图和此列表视图不滚动。我不知道为什么。是否由于多个列表视图而发生?如果不是,那我该如何解决我的问题。这是扩展视图后包含不滚动的列表视图的图像。

【问题讨论】:

  • 嵌套滚动视图可能会导致问题。为避免这种情况,请为ScrollViewListView 使用调度或拦截触摸事件。
  • 我没有在任何视图中使用任何滚动视图
  • 为什么要使用嵌套列表视图?我相信您可以使用单个 ListView 完成上述 UI。
  • 1)第一个列表视图用于主聊天 2)第二个列表视图用于警报消息,它收集所有警报 3)第三个用于显示来自上述警报之一的所有消息 嵌套列表视图真的吗效果滚动?

标签: android xml listview


【解决方案1】:

我已经解决了上述问题。现在发布我的解决方案可能对其他人有所帮助。

    public static void allowListViewToScroll(ListView lv) {
    lv.setOnTouchListener(new ListView.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int action = event.getAction();
            switch (action) {
                case MotionEvent.ACTION_DOWN:
                    // Disallow ScrollView to intercept touch events.
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                    break;

                case MotionEvent.ACTION_UP:
                    // Allow ScrollView to intercept touch events.
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
            }

            // Handle ListView touch events.
            v.onTouchEvent(event);
            return true;
        }
    });
}

上面是方法,传递你想要滚动的ListView。希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 2021-11-27
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多