本文實例講述了Android編程開發ScrollView中ViewPager無法正常滑動問題解決方法。分享給大家供大家參考,具體如下:
這里主要介紹如何解決ViewPager在ScrollView中滑動經常失效、無法正常滑動問題。
解決方法只需要在接近水平滾動時ScrollView不處理事件而交由其子View(即這里的ViewPager)處理即可,重寫ScrollView的onInterceptTouchEvent函數,如下:
package cc.newnews.view; import android.content.Context; import android.util.AttributeSet; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener;import android.view.MotionEvent; import android.widget.ScrollView; public class VerticalScrollView extends ScrollView { private GestureDetector mGestureDetector; public VerticalScrollView(Context context, AttributeSet attrs) { super(context, attrs); mGestureDetector = new GestureDetector(context, new YScrollDetector()); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev); } class YScrollDetector extends SimpleOnGestureListener { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { /** * 如果我們滾動更接近水平方向,返回false,讓子視圖來處理它 */ return (Math.abs(distanceY) > Math.abs(distanceX)); } } } 再將xml中的ScrollView改為<xxx.xxx.xxx.VerticalScrollView>即包名.重寫的ScrollView的類名)即可。
本方法同樣適用于ScrollView中ListView等其他View無法滾動。
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答
圖片精選