本文執行個體講述了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程式設計有所協助。