【问题标题】:Android: ListView with Swipe inside ViewPagerAndroid:在 ViewPager 内滑动的 ListView
【发布时间】:2014-01-24 14:01:24
【问题描述】:

我有一个包含整个活动的 ViewPager 活动。这个 ViewPager 内部是一个 ListView,它只覆盖了片段的底部。 ListView 可以识别滑动事件(您可以左右滑动项目),但是当您想要滑动列表项时,ViewPager 会切换页面,因此它不起作用。 有没有一种简单的方法来处理这个问题,以便 ViewPager 不会接收到用于列表的触摸事件。

谢谢

【问题讨论】:

    标签: android listview android-viewpager


    【解决方案1】:

    我的第一个想法是requestDisallowInterceptTouchEvent() 可以帮助你。

    public boolean onTouch(View v, MotionEvent e) {
        if(e.getAction() == MotionEvent.ACTION_DOWN){
           listItem.getParent().requestDisallowInterceptTouchEvent(true);
        }
    }
    

    【讨论】:

    • 这很好用,但是当我更改 ViewPager 内的数据(并在其适配器上调用 notifyDataSetChanged)时,在 ListView 内滑动它不再起作用(ViewPager 翻转虽然我仍然希望它留下并通过 ListView 接收触摸事件)
    • 如果你调试它,onTouch()notifyDataSetChanged() 之后仍然被调用吗? onTouch() 是在列表视图中,还是在列表中的每个项目中?
    • onTouch() 使用 ACTION_CANCEL 调用,然后不再调用。然后调用 ViewPager 的 onTouch()。我在 listView 中包含了 onTouch,而不是所有列表项。
    • 我不知道它是否会起作用,但是在列表项中设置onTouch() 怎么样?
    • @Tom Macdonald,在自定义 BaseAdapter 的 getView() 返回的视图中使用该代码设置 onTouchListener
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多