ViewPager在ScrollView中无法正常滑动的问题

来源:

能够兼容ViewPager的ScrollView http://justwyy.iteye.com/blog/1567390

ScrollView中嵌入ViewPager,ViewPager的滑动出现问题  http://bbs.csdn.net/topics/390213480

在网上找到两种方法,都是自定义scrollview,大家可以试试。

方法一:

public class CustomScrollView extends ScrollView {
    private boolean canScroll;

    private GestureDetector mGestureDetector;
    View.OnTouchListener mGestureListener;

    public CustomScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mGestureDetector = new GestureDetector(new YScrollDetector());
        canScroll = true;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if(ev.getAction() == MotionEvent.ACTION_UP)
            canScroll = true;
        return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
    }

    class YScrollDetector extends SimpleOnGestureListener {
        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            if(canScroll)
                if (Math.abs(distanceY) >= Math.abs(distanceX))
                    canScroll = true;
                else
                    canScroll = false;
            return canScroll;
        }
    }
}

方法二:

public class CustomScrollView extends ScrollView {
    // 滑动距离及坐标
    private float xDistance, yDistance, xLast, yLast;  

    public CustomScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }  

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                xDistance = yDistance = 0f;
                xLast = ev.getX();
                yLast = ev.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                final float curX = ev.getX();
                final float curY = ev.getY();  

                xDistance += Math.abs(curX - xLast);
                yDistance += Math.abs(curY - yLast);
                xLast = curX;
                yLast = curY;  

                if(xDistance > yDistance){
                    return false;
                }
        }  

        return super.onInterceptTouchEvent(ev);
    }
}
时间: 2024-10-31 07:13:15

ViewPager在ScrollView中无法正常滑动的问题的相关文章

解决水平ListView在ScrollView中出现的滑动冲突

  解决的问题有两个: 1)实现水平滑动的ListView.重写AdapterView,上代码:  Java代码   package com.liucanwen.horizontallistview.view;      import java.util.LinkedList;   import java.util.Queue;      import android.content.Context;   import android.database.DataSetObserver;   im

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

本文实例讲述了Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法.分享给大家供大家参考,具体如下: 这里主要介绍如何解决ViewPager在ScrollView中滑动经常失效.无法正常滑动问题. 解决方法只需要在接近水平滚动时ScrollView不处理事件而交由其子View(即这里的ViewPager)处理即可,重写ScrollView的onInterceptTouchEvent函数,如下: package cc.newnews.view; import an

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

本文实例讲述了Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法.分享给大家供大家参考,具体如下: 这里主要介绍如何解决ViewPager在ScrollView中滑动经常失效.无法正常滑动问题. 解决方法只需要在接近水平滚动时ScrollView不处理事件而交由其子View(即这里的ViewPager)处理即可,重写ScrollView的onInterceptTouchEvent函数,如下: package cc.newnews.view; import an

浅谈Android实践之ScrollView中滑动冲突处理解决方案_Android

1. 前言  在Android开发中,如果是一些简单的布局,都很容易搞定,但是一旦涉及到复杂的页面,特别是为了兼容小屏手机而使用了ScrollView以后,就会出现很多点击事件的冲突,最经典的就是ScrollView中嵌套了ListView.我想大部分刚开始接触Android的同学们都踩到过这个坑,这一篇文章就从最近做的一个项目讲起,然后在过程中提供一些解决冲突的思路. 2. 项目起始 项目有一个页面,涉及到了ViewPager,MapView,ListView,也就是说在一个页面中,会有这三个

浅谈Android实践之ScrollView中滑动冲突处理解决方案

1. 前言 在Android开发中,如果是一些简单的布局,都很容易搞定,但是一旦涉及到复杂的页面,特别是为了兼容小屏手机而使用了ScrollView以后,就会出现很多点击事件的冲突,最经典的就是ScrollView中嵌套了ListView.我想大部分刚开始接触Android的同学们都踩到过这个坑,这一篇文章就从最近做的一个项目讲起,然后在过程中提供一些解决冲突的思路. 2. 项目起始 项目有一个页面,涉及到了ViewPager,MapView,ListView,也就是说在一个页面中,会有这三个V

scrollview中嵌套SwipeListView在侧滑删除的时候禁止listview的上下滑动

问题描述 scrollview中嵌套SwipeListView在侧滑删除的时候禁止listview的上下滑动 scrollview中嵌套listview ,listview的长度超过屏幕的话就找不到scrollview的焦点了,listview是继承SwipeMenuListView可以左右滑动. 已经在listview中设置 /** * 设置不滚动 */ @Override public void onMeasure(int widthMeasureSpec, int heightMeasur

scrollview-SurfaceView在ScrollView中滑动背景问题

问题描述 SurfaceView在ScrollView中滑动背景问题 遇到一个很奇葩的问题,我把SurfaceView放在一个ScorllView当中, 结果滑动ScorllView的时候,SurfaceView的边缘会出现黑色

android 滑动冲突-Android ScrollView 中 TextView 多行显示问题,textview不能滑动

问题描述 Android ScrollView 中 TextView 多行显示问题,textview不能滑动 textview的多行滚动变成不能滑动了,被scrollview的滑动给拿去了. 至于 百度说的改成 wrap_content也是不行的. 解决方案 Android textview 多行显示Android textview显示多行android textview 多行之后显示省略号 解决方案二: android:layout_height="wrap_content" 给个高

fragmentactivity-Fragment中嵌套ViewPager,ViewPager中有好几个Fragment实现滑动

问题描述 Fragment中嵌套ViewPager,ViewPager中有好几个Fragment实现滑动 Fragment中嵌套ViewPager,ViewPager中有好几个Fragment实现滑动,其中一个Fragment中有照相功能.在Activity中的拍照实现很简单,但是在Fragment中实现拍照,尤其是多层嵌套下的Fragment中更不好实现. 我这个是FragmentActivity中使用TabHostFragment实现底部菜单,包含Afragment.Bfragment.Cf