有这样一个需求,一个SlidingPaneLayout里面包裹了一个ViewGroup而他可以被多个Fragment添加
2016-10-09 18:42
363 查看
问题:
一个SlidingPaneLayout中包裹多个Fragment而多个Fragment中的布局中又存在ViewPager这时会出现你左滑时无法滑动ViewPager中的数据
要求:
但ViewPager中CurrentItem不为0时就可向左滑。
实现:
其实就是出现事件冲突,解决的办法有很多。我来说下我的思路:
写个类继承SlidingPaneLayout重写它的onInterceptEvent方法。我们只想要知道Viewpager.getCurrentItem为0吗如果不为0就return false;表示不拦截
问题在如何获取ViewPager。。。。因为ViewPager在其中的一个Fragment布局中:
View View = findeViewBy(R.id.content);//这里获取是SlidingPaneLayout中的要设置上Fragment的ViewGroup(ViewGroup extends View)
然后我们
ViewPager viewPager = view.findView(R.id.viewPager);//获取那个fragment布局中ViewPager
if(viewPager!=null&&viewPager.getCurrentItem()!=0)//注意这里一定要判断ViewPager是否为空,因为但加载的不是那个Fragment时就会为null
return false;
很多人到这里还是不明白为啥可以
SilingPaneLayout-----ViewGroup(Fragment)--------ViewPager
它的结构如上silingPaneLayout中又个ViewGroup(Fragment)而Fragment中又ViewPager
补充点:
其实可以不用获取ViewGroup直接使用findView(。。。)//里面填入Fragment中ViewPager中的Id
我做的项目中有个多个Fragment,并且有多个Fragment中存在VewPager控件。而且我添加这些Fragment都是填加,要显示的就
show 不显示就hidden
1.将不同Fragment中ViewPager中的id设置成唯一
2.在它们相应的Fragment中先获取ViewPager对象调用 viewPager.setTag(this)把fragment对象设置上去
3.在SlidingPaneLayout的onInterceptEvent中先获取对象的ViewPager 在调用getTag()获取上面设置上去的Fragment
如果Fragment为显示状态并且viewPager.getCurrentItem()!=0 SlidingPaneLayout就不拦截
这里为啥可以在Fragment的ViewPager设置Fragment后,SlingPaneLayout中又可以获取?
能进行事件分发说明它的绘制已经完成,再就行布局时显示ViewGroup再传递到子View吧
一个SlidingPaneLayout中包裹多个Fragment而多个Fragment中的布局中又存在ViewPager这时会出现你左滑时无法滑动ViewPager中的数据
要求:
但ViewPager中CurrentItem不为0时就可向左滑。
实现:
其实就是出现事件冲突,解决的办法有很多。我来说下我的思路:
写个类继承SlidingPaneLayout重写它的onInterceptEvent方法。我们只想要知道Viewpager.getCurrentItem为0吗如果不为0就return false;表示不拦截
问题在如何获取ViewPager。。。。因为ViewPager在其中的一个Fragment布局中:
View View = findeViewBy(R.id.content);//这里获取是SlidingPaneLayout中的要设置上Fragment的ViewGroup(ViewGroup extends View)
然后我们
ViewPager viewPager = view.findView(R.id.viewPager);//获取那个fragment布局中ViewPager
if(viewPager!=null&&viewPager.getCurrentItem()!=0)//注意这里一定要判断ViewPager是否为空,因为但加载的不是那个Fragment时就会为null
return false;
很多人到这里还是不明白为啥可以
SilingPaneLayout-----ViewGroup(Fragment)--------ViewPager
它的结构如上silingPaneLayout中又个ViewGroup(Fragment)而Fragment中又ViewPager
补充点:
其实可以不用获取ViewGroup直接使用findView(。。。)//里面填入Fragment中ViewPager中的Id
我做的项目中有个多个Fragment,并且有多个Fragment中存在VewPager控件。而且我添加这些Fragment都是填加,要显示的就
show 不显示就hidden
1.将不同Fragment中ViewPager中的id设置成唯一
2.在它们相应的Fragment中先获取ViewPager对象调用 viewPager.setTag(this)把fragment对象设置上去
3.在SlidingPaneLayout的onInterceptEvent中先获取对象的ViewPager 在调用getTag()获取上面设置上去的Fragment
如果Fragment为显示状态并且viewPager.getCurrentItem()!=0 SlidingPaneLayout就不拦截
这里为啥可以在Fragment的ViewPager设置Fragment后,SlingPaneLayout中又可以获取?
能进行事件分发说明它的绘制已经完成,再就行布局时显示ViewGroup再传递到子View吧
相关文章推荐
- 大神语录1 如何滑动fragmentmanager里面一个fragment里面的viewgroup---dispatchTouchEvent 、onInterceptTouchEvent 、onTouchEvent
- Viewpager里添加Fragment,Fragment里面添加一个Viewpager
- 从CScrollView继承一个,然后可以往里面添加Dialog,类似于Panle
- 同一个菜单,在view和mainframe两个类里面添加响应函数的区别
- 在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!
- ViewPager的一个应用,用fragment来当页面,可以左右滑动,上面有一条线,来分隔
- 自己动手实现一个可垂直滑动的ViewGroup,相当于可以垂直滑动的viewpager
- Viewpager 的Fragment里面放一个viewpager 占位且空白
- 动态修改viewpager里面的fragment(添加和删除)
- 手把手教您撸一个底部中心凸起的可以添加通知条数的底栏(安卓APP底栏点击第一次选中当前Fragment第二次点击更新当前页面(实现))
- SpannableString,多个textview合为一个,还可以为TextView添加图片
- 简化 RecyclerView 的多种 type 的 adapter,Fragment 可以动态添加到 RecyclerView 上,实现复杂的界面分多个模块开发
- Fragment中添加一个WebView,webview的回退问题
- B2C外贸网站产品设计和功能需求,一个产品设置了在多个类别里面都可以看到,以及Email模板问题
- 在一个ViewGroup中添加子view
- view 画出一个形状,并在里面添加内容+文本居中
- 关于Viewpager中动态添加一个Fragment的做法
- 在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!
- 关于Fragment中定义一个ListView,然后给这个ListView添加header(ViewPager)的问题
- ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应。