ViewPager嵌套ViewPager 滑动冲突

我在网上找了许多解决方法。但都不是很完美。

当进入子viewpager确实解决了子viewpager的滑动,但是父viewpager就失效了。现在奉上修改过的代码给大家。

//别忘了布局引用也要变

/**

*    <com.jing.meknow.ChildViewPager

*        android:id="@+id/iask_main_view_pager"

*        android:layout_width="match_parent"

*     android:layout_height="0px"

*      android:layout_weight="1"

*       >

*    </com.jing.meknow.ChildViewPager>

*/

package com.jing.meknow;

import android.content.Context;

import android.graphics.PointF;

import android.support.v4.view.ViewPager;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.View;

public class ChildViewPager extends ViewPager {

public ChildViewPager(Context context) {

super(context);

}

public ChildViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

}

PointF downPoint = new PointF();

OnSingleTouchListener onSingleTouchListener;

@Override

public boolean onTouchEvent(MotionEvent evt) {

switch (evt.getAction()) {

case MotionEvent.ACTION_DOWN:

// 记录按下时候的坐标

downPoint.x = evt.getX();

downPoint.y = evt.getY();

if (this.getChildCount() > 1) { // 有内容,多于1个时

// 通知其父控件,现在进行的是本控件的操作,不允许拦截

getParent().requestDisallowInterceptTouchEvent(true);

}

break;

case MotionEvent.ACTION_MOVE:

if (this.getChildCount() > 1) { // 有内容,多于1个时

if (this.getCurrentItem() == 0 && downPoint.x < evt.getX()) {

getParent().requestDisallowInterceptTouchEvent(false);

} else {

// 通知其父控件,现在进行的是本控件的操作,不允许拦截

getParent().requestDisallowInterceptTouchEvent(true);

}

}

break;

case MotionEvent.ACTION_UP:

// 在up时判断是否按下和松手的坐标为一个点

if (PointF.length(evt.getX() - downPoint.x, evt.getY()

- downPoint.y) < (float) 5.0) {

onSingleTouch(this);

return true;

}

break;

}

return super.onTouchEvent(evt);

}

public void onSingleTouch(View v) {

if (onSingleTouchListener != null) {

onSingleTouchListener.onSingleTouch(v);

}

}

public interface OnSingleTouchListener {

public void onSingleTouch(View v);

}

public void setOnSingleTouchListener(

OnSingleTouchListener onSingleTouchListener) {

this.onSingleTouchListener = onSingleTouchListener;

}

}

时间: 2024-08-10 00:00:13

ViewPager嵌套ViewPager 滑动冲突的相关文章

ViewPager嵌套ViewPager后子ViewPager滑动不正常问题

ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. 以下代码是转载的,经本人测试,可以用!!! 转载地址:http://blog.csdn.net/leewenjin/article/details/21011841 package com.lwj.app.customview; import android.content.Context; import android.graphics.PointF; import

Viewpager嵌套Viewpager遇到的一些问题

Viewpager嵌套Viewpager,如果内层的滑动卡顿,那么需要将其实只要用外层Viewpager调用setOnTouchListener方法就将左右滑动禁用了, 但是如果内层的Viewpager可以正常滑动,但是在滑动到最后一页的时候底层 当将内层ViewPager滑到底时,上面调用的方法貌似约束不了他,他会先拉出一点点,再划几次就慢慢就划过一半了,但是划不到另一个界面这个时候内层的viewpager需要自定义一个viewpager来处理事件分发

ScrollView 嵌套ListView 滑动冲突,与显示不全

import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /** * * @author jiarh *2014-8-14 */ public class UserListView extends ListView { public UserListView(Context context) { super(context); } public UserLis

处理ViewPager嵌套ViewPager的滑动事件冲突

开发时遇到一个问题:使用ViewPager+Fragment实现滑动tab切换,在其中某一个Fragment中嵌套一个ViewPager轮播卡片.测试发现轮播卡片不能进行左右滑动了. 看了不少博文,都是通过覆盖onInterceptTouchEvent等方法拦截事件处理,例如: @Override public boolean dispatchTouchEvent(MotionEvent ev) { mPager.requestDisallowInterceptTouchEvent(true);

ViewPager嵌套viewpager有什么冲突问题

Viewpager q嵌套 viewPager ,左右滑动事件的冲突,外围的ViewPager要重写几个方法就可以了: onTouchEvent,OnInterceptTouchEvent,在这两个方法中加入自定义样式,在使用的时候根据需要选择 使用系统自己的处理方法或者用户自定义的方式 public class MYViewPager extends ViewPager { private boolean swipeable; public MYViewPager(Context contex

Android之viewPager嵌套viewPager无法滑动子viewPager

现在最头疼的事就是需求不明确,这不,有遇到你个奇葩需求,父viewPager总共有三个选项卡,第一个选项卡里嵌入一个子viewPager,这时候问题就来了,子viewPager无法滑动,我猜的事父viewPager把子viewPager拦截了,于是尝试了下面的第一种方法 1.重写父viewPager的onInterceptTouchEvent方法 /** * @author 子墨 * * 2015-2-26上午8:59:50 */ public class MyViewPager extends

Android ViewPager嵌套ViewPager滑动冲突处理方法

dispatchTouchEvent方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发, 然后决定是自身消费当前事件还是继续往下分发给子控件处理.返回true表示不继续分发,事件没有被消费. 返回false则继续往下分发,如果是ViewGroup则分发给onInterceptTouchEvent进行判断是否拦截该事件. onTouchEvent方法用于事件的处理,返回true表示消费处理当前事件,返回false则不处理,交给子控件进行继续分发. onInterceptTouc

Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案

为了解决这个问题.可以自定义viewpager,然后在里面监听首饰,自定义点击事件 package com.hpuvoice.view; import android.content.Context; import android.graphics.PointF; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.GestureDetector; impo

解决ScrollView嵌套ViewPager出现的滑动冲突问题

/** * */ public class ScrollView1 extends ScrollView { private boolean canScroll; private GestureDetector mGestureDetector; View.OnTouchListener mGestureListener; public ScrollView1(Context context, AttributeSet attrs) { super(context, attrs); mGestu