Android中Scrollview、ViewPager冲突问题汇总(已解决)
来源:互联网 发布:淘宝人生 笔趣阁 编辑:程序博客网 时间:2024/05/01 10:29
显示问题:
1、设置ScrollView的fillViewPort为true
2、设置ViewPager的layout_height为一个固定高度,比如:100dip
冲突问题:
不过ViewPager显示出来以后,还有另外一个冲突:ViewPager左右不能滑动了!是的,因为这个事件其实已经被外层的ScrollView截获!
重写ScrollView控件!
第一种解决方案:
重写ScrollView,然后嵌套使用无任何问题,如何重写,具体看以下地址
http://stackoverflow.com/questions/2646028/android-horizontalscrollview-within-scrollview-touch-handling
备注:ListView嵌套无法滑动也可以解决,listview布局推荐线性布局,相对布局有小问题,如何解决请google
第二种方案:viewpager结合下拉刷新组件,重写Viewpager组件,如何重写参考以下代码,
package com.bavariama.base.widget;import java.net.ContentHandler;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.GestureDetector;import android.view.MotionEvent;/** * 此ViewPager解决与父容器ScrollView冲突的问题,无法完美解决.有卡顿 * 此自定义组件和下拉刷新scrollview配合暂时小完美,有待改善 * @author bavariama * */public class InsideViewPager extends ViewPager { float curX = 0f; float downX = 0f; OnSingleTouchListener onSingleTouchListener; public InsideViewPager(Context context) { // TODO Auto-generated constructor stub super(context); } public InsideViewPager(Context context, AttributeSet attrs) { // TODO Auto-generated constructor stub super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent ev) { curX = ev.getX(); // TODO Auto-generated method stub if (ev.getAction() == MotionEvent.ACTION_DOWN) { downX = curX; } int curIndex = getCurrentItem(); if (curIndex == 0) { if (downX <= curX) { getParent().requestDisallowInterceptTouchEvent(false); } else { getParent().requestDisallowInterceptTouchEvent(true); } } else if (curIndex == getAdapter().getCount() - 1) { if (downX >= curX) { getParent().requestDisallowInterceptTouchEvent(false); } else { getParent().requestDisallowInterceptTouchEvent(true); } } else { getParent().requestDisallowInterceptTouchEvent(true); } return super.onTouchEvent(ev); } public void onSingleTouch() { if (onSingleTouchListener != null) { onSingleTouchListener.onSingleTouch(); } } public interface OnSingleTouchListener { public void onSingleTouch(); } public void setOnSingleTouchListner( OnSingleTouchListener onSingleTouchListener) { this.onSingleTouchListener = onSingleTouchListener; }}
0 1
- Android中Scrollview、ViewPager冲突问题汇总(已解决)
- Android中Scrollview、ViewPager冲突问题汇总(已解决)
- Android中Scrollview、ViewPager冲突问题汇总
- Android中Scrollview、ViewPager、ListView冲突问题
- Android中Viewpager,ScrollView嵌套ViewPager滑动冲突解决
- Android中Scrollview、ViewPager、ListView冲突问题 (亲测可用)
- 解决ScrollView嵌套viewpager冲突问题
- 解决ScrollView嵌套viewpager的冲突问题
- Android SwipeRefreshLayout+ViewPager+ScrollView 滑动冲突解决
- Android ScrollView 与 viewpager冲突问题
- 重写viewpager解决scrollview 和viewpager冲突问题
- android scrollview viewpager 冲突
- Android ScrollView中嵌套ListView,滑动冲突问题的解决
- Android ScrollView中嵌套ListView,滑动冲突问题的解决
- ScrollView中嵌入ViewPager,ViewPager的左右滑动冲突问题
- 解决ScrollView嵌套ViewPager出现的滑动冲突问题
- 安卓解决viewPager+scrollView+listView滑动冲突的问题
- 如何解决listView或scrollView+viewpager手势冲突的问题
- Android Viewpager实现图片轮播(仿优酷效果)
- Genymotion安装常见问题
- SVN的使用(服务端与客户端)
- startActivityForResult用法详解
- Android 关于ZXing的使用
- Android中Scrollview、ViewPager冲突问题汇总(已解决)
- Android自定义圆形进度条,完成类似LOFTER效果
- 处理百万级以上的数据提高查询速度的方法1
- Android自定义Toast
- #!/bin/bash
- Android 中ViewPagerIndicator的使用
- Android实现自适应正方形GridView(陌陌引导页面效果)
- Android中GridView使用总结
- Android中AutoCompleteTextView的使用