有这样一个需求,一个SlidingPaneLayout里面包裹了一个ViewGroup而他可以被多个Fragment添加
来源:互联网 发布:mac上类似美图秀秀 编辑:程序博客网 时间:2024/04/29 06:32
问题:
一个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里面包裹了一个ViewGroup而他可以被多个Fragment添加
- Viewpager里添加Fragment,Fragment里面添加一个Viewpager
- 添加删除程序里面有一个QQBrowserCRTDLL
- 他就这样成为了一个了不得的销售精英
- 有这样一个朋友
- 有这样一个领导!
- 神段子 | 有这样一个运维工程师,他把上云的经历写成了剧本
- 有一个这样的男人
- 这样就一个月了
- 在一个ViewGroup中添加子view
- 活动里面添加一个碎片
- 要记住,一个人为多大的事情而发怒,他的心胸就有多大。
- 如果有一个这样的需求,您会如何设计?考考你的设计能力:)
- 在项目上有一个下载的需求,准备这样来做
- 为什么要做这样一个工具?AppCan认为开发者有什么样的需求?
- 现在有这样一个需求,我需要改变两个div的大小,一个变大,另一个就需要变小。
- Andriod Fragment---给Activity添加一个Fragment
- Andriod Fragment---给Activity添加一个Fragment
- jquery 常用问题笔记(更新中)
- 工作一年之后
- C语言基础
- 电脑操作的常用技巧
- URL参数的截取
- 有这样一个需求,一个SlidingPaneLayout里面包裹了一个ViewGroup而他可以被多个Fragment添加
- PASCAL VOC数据集分析
- as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or
- Cocos2d-x v3.12 做一个layer触摸屏蔽层
- CountDownLatch 模拟高并发
- 使用HTML5 Canvas绘制一个太极,并令其转动
- Java网络编程(UDP)
- 关键字-分节2(static)
- webview系列:Html5页面和Native App怎么进行交互