【问题标题】:How to add swipelayout in recyclerview inside viewpager fragment?如何在 viewpager 片段内的 recyclerview 中添加 swipelayout?
【发布时间】:2015-05-07 07:11:23
【问题描述】:

我在 RecyclerView 项目中使用AndroidSwipeLayout 进行“滑动删除”操作。 Swipe 不能作为 RecyclerView 的父级工作是 ViewPager Fragment。 SwipeLayout 还包含 parent.requestDisallowInterceptTouchEvent(true);拦截来自父级的 touchEvent。在不禁用 ViewPager 滑动的情况下解决此问题的方法是什么。

【问题讨论】:

  • Swipes todo 应用在 ViewPager 中包含相同的 Swipe Action

标签: android android-viewpager android-recyclerview swipeview


【解决方案1】:

您必须在适配器中的列表行中使用setOnTouchListener,如下所示:

yourListRowContent.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_MOVE) {
                    yourViewPager.setPagerEnabled(false);
                }
                return true;
            }
        });

通过使用yourViewPager.setPagerEnabled(false);,它会在您滑动列表内容时禁用您的浏览器,但在您的片段中再次执行以下操作(这将重新激活您的浏览器):

yourRecyclerViewInFragment.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            HomeFragment.mPager.setPagerEnabled(true);
            return false;
        }
    });

【讨论】:

  • 我更喜欢这个yourListRowContent.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { yourViewPager.setPagerEnabled(false); }else if (event.getAction() == MotionEvent.ACTION_UP) { yourViewPager.setPagerEnabled(true); } return true; } });
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多