欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法

程序员文章站 2023-11-16 16:54:22
本文实例讲述了android编程开发scrollview中viewpager无法正常滑动问题解决方法。分享给大家供大家参考,具体如下: 这里主要介绍如何解决viewpag...

本文实例讲述了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程序设计有所帮助。