在fragment中使用抽屉效果出现的问题
mayangyang-github opened this issue · comments
问题描述
使用版本 1.1.2
请描述您遇到的问题
我先说我页面的布局结构:
MainActivity中 从上到下, 分别是一个NoScrollViewPager包装5个Fragment,
底部是BottomNavigationView作为切换Fragment的功能按钮.
我的需求:
[只]在第一个fragment中, 从左往右侧滑, 需要拉出来一个抽屉布局, 这个布局要全屏 (遮挡MainActivity的一切, 包括Mainactivity下方的BottomNavigationView), 其他的fragment中侧滑不能拉出此布局.
我的做法:
我在第一个Fragment 的 onCreateView中,
View drawerView = LayoutInflater.from(view.getContext()).inflate(R.layout.nav_header_main, container, false);
final DrawerConsumer drawerConsumer = new DrawerConsumer();
drawerConsumer.setLeftDrawerView(drawerView);
final SwipeConsumer swipeConsumer = SmartSwipe.wrap(getActivity())
.addConsumer(drawerConsumer) //抽屉效果
//可以设置横向(左右两侧)的抽屉为同一个view ,也可以为不同方向分别设置不同的view
.setHorizontalDrawerView(drawerView)
.setScrimColor(0x2F000000) //设置遮罩的颜色
.setShadowColor(0xFFDDDDDC) //设置边缘的阴影颜色
//.setSensitivity(0.1f); //灵敏度,数值越大越灵敏
.setEdgeSize(0); //在控件边缘处一定范围内才能触发, 若为0,表示在整个控件区域都可触发
这样做是没问题的, 在第一个Fragment中, 侧滑确实能拉出来drawerView, 在其他Fragment中不能拉出此布局.
但是需求说, 在第一个Fragment中拉出布局的手势范围有点太大了, 我就:
.setEdgeSize(100); //在控件边缘处一定范围内才能触发, 若为0,表示在整个控件区域都可触发
这样做, 在第一个Fragment中左侧边缘才能拉出drawerView, 但是问题出现了:
我点击BottomNavigationView切换到其他Fragment, 在其他Fragment中左边侧滑, 也能拉出来这个drawerView...
我的问题:
我不想在其他Fragment中侧滑拉出来这个drawerView, 求教解决办法...
@mayangyang-github 你试试继承DrawerConsumer,复写tryAcceptMoving
方法
@mayangyang-github 你试试继承DrawerConsumer,复写
tryAcceptMoving
方法
感谢大佬提供的解决思路, 我在 重写了 tryAcceptMoving
方法中判断了当前BottomNavigationView 的Index, 如果是第0个 就返回super, 否则就返回false :
if (currentIndex == 0) {
return super.tryAcceptMoving(pointerId, downX, downY, dx, dy);
} else {
return false;
}
这样就解决了问题