解决SlideDetailsLayout与ViewPager垂直滚动事件冲突问题
来源:互联网 发布:无言网络歌手歌词 编辑:程序博客网 时间:2024/05/22 17:10
最近做项目用到SlideDetailsLayout这个控件,github地址:https://github.com/cnbleu/SlideDetailsLayout
在behind页面里用到了ViewPager,发现里面嵌套的ScrollView与SlideDetailsLayout出现事件冲突,表现为SrollView没有滑动回顶部就返回SlideDetailsLayout的front页面了。
经过研究SlideDetailsLayout的代码后,通过在innerCanChildScrollVertically方法中加入对ViewPager的处理逻辑后最终解决了这个问题,下面是具体步骤。
第一步:在定义的PagerAdpter类中通过重写setPrimaryItem方法获取到当前显示的Fragment
public Fragment currentFragment;
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
currentFragment = (Fragment) object;
}
第二步:在SlideDetailsLayout类中的innerCanChildScrollVertically方法中增加对ViewPager的处理逻辑,下面是修改后的方法。
private boolean innerCanChildScrollVertically(View view, int direction) {
if (view instanceof ViewGroup) {
final ViewGroup vGroup = (ViewGroup) view;
View child;
boolean result;
for (int i = 0; i < vGroup.getChildCount(); i++) {
child = vGroup.getChildAt(i);
//支持ViewPager里面的子控件滚动 by:York
if (child instanceof ViewPager) {
final ViewPager viewPager = (ViewPager) child;
//自定义的PageAdapter
final SilderPagerAdapter pagerAdapter = (SilderPagerAdapter) viewPager.getAdapter();
return innerCanChildScrollVertically(pagerAdapter.currentFragment.getView(), direction);
} else {
if (child instanceof View) {
result = ViewCompat.canScrollVertically(child, direction);
} else {
result = innerCanChildScrollVertically(child, direction);
}
if (result) {
return true;
}
}
}
}
return ViewCompat.canScrollVertically(view, direction);
}
至此,大功告成!
- 解决SlideDetailsLayout与ViewPager垂直滚动事件冲突问题
- android 解决ViewPager与Gallery事件冲突
- SwipeRefreshLayout与ViewPager滑动事件冲突解决
- SwipeRefreshLayout与ViewPager滑动事件冲突解决
- 解决Viewpager与listivew冲突问题
- 解决Gallery与viewpager滑动冲突问题
- 解决侧滑与viewpager冲突问题。
- 解决ListView+ViewPager滑动事件冲突的问题
- 解决ListView+ViewPager滑动事件冲突的问题
- Android解决ListView头ViewPager事件冲突问题
- 解决android中HorizontalScrollView的滚动事件与组件的Touch冲突问题
- 解决android中HorizontalScrollView的滚动事件与组件的Touch冲突问题 --- 修正版
- viewpager与子view的事件冲突解决
- viewpager与子view的事件冲突解决
- [转]viewpager与子view的事件冲突解决
- 解决ViewPager与父ViewGrop的事件冲突
- 自定义 viewpager 解决viewpager 嵌套到其他滚动父控件时候冲突的问题
- 解决EditText文字滚动与触摸事件的冲突
- mysql主从复制(超简单)
- openCV vs2013配置
- css多种样式修饰最后哪个实现???
- C++STL容器的基本特性和原理
- grails项目中导出文件
- 解决SlideDetailsLayout与ViewPager垂直滚动事件冲突问题
- 将博客搬至CSDN
- studio 提示不区分大小写
- 史上最流行的Android组件、工具、框架大全
- YAML: Define an R function
- 五大常用算法
- LeetCode-54.Spiral Matrix I
- Linux查看History记录加时间戳小技巧
- 欢迎使用CSDN-markdown编辑器