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 android.support.v4.view.ViewPager;

import android.util.AttributeSet;

import android.view.MotionEvent;

public class ChildViewPager extends ViewPager{

PointF downP = new PointF();

PointF curP = new PointF();

OnSingleTouchListener onSingleTouchListener;

public ChildViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

}

public ChildViewPager(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

@Override

public boolean onInterceptTouchEvent(MotionEvent arg0) {

// TODO Auto-generated method stub

//当拦截触摸事件到达此位置的时候,返回true,

//说明将onTouch拦截在此控件,进而执行此控件的onTouchEvent

return true;

}

@Override

public boolean onTouchEvent(MotionEvent arg0) {

// TODO Auto-generated method stub

//每次进行onTouch事件都记录当前的按下的坐标

curP.x = arg0.getX();

curP.y = arg0.getY();

if(arg0.getAction() == MotionEvent.ACTION_DOWN){

//记录按下时候的坐标

//切记不可用 downP = curP ,这样在改变curP的时候,downP也会改变

downP.x = arg0.getX();

downP.y = arg0.getY();

//此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰

getParent().requestDisallowInterceptTouchEvent(true);

}

if(arg0.getAction() == MotionEvent.ACTION_MOVE){

//此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰

getParent().requestDisallowInterceptTouchEvent(true);

}

if(arg0.getAction() == MotionEvent.ACTION_UP){

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

//如果是一个点,将执行点击事件,这是我自己写的点击事件,而不是onclick

if(downP.x==curP.x && downP.y==curP.y){

onSingleTouch();

return true;

}

}

return super.onTouchEvent(arg0);

}

public void onSingleTouch() {

if (onSingleTouchListener!= null) {

onSingleTouchListener.onSingleTouch();

}

}

public interface OnSingleTouchListener {

public void onSingleTouch();

}

public void setOnSingleTouchListener(OnSingleTouchListener onSingleTouchListener) {

this.onSingleTouchListener = onSingleTouchListener;

}

}

时间: 2024-08-14 04:56:55

ViewPager嵌套ViewPager后子ViewPager滑动不正常问题的相关文章

ViewPager嵌套ViewPager 滑动冲突

我在网上找了许多解决方法.但都不是很完美. 当进入子viewpager确实解决了子viewpager的滑动,但是父viewpager就失效了.现在奉上修改过的代码给大家. //别忘了布局引用也要变 /** *    <com.jing.meknow.ChildViewPager *        android:id="@+id/iask_main_view_pager" *        android:layout_width="match_parent"

andorid自己定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager

近期的项目中,有一个需求要用ViewPager中嵌套ViewPager去实现整个效果.没做不论什么处理做出来后,仅仅能不停的滑动子ViewPager,父ViewPager就无法滑动了,这样肯定是不满足的,分析了一下原因,非常显示是整个滑动事件都被子ViewPager消耗掉了,所以仅仅能对ViewPager做一下自己定义处理.才干够实现. 下面是这个需求实现后的效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNxNTIxMTMxNDEyMw=

andorid自定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager

最近的项目中,有一个需求要用ViewPager中嵌套ViewPager去实现整个效果,没做任何处理做出来后,只能不停的滑动子ViewPager,父ViewPager就无法滑动了,这样肯定是不满足的,分析了一下原因,很显示是整个滑动事件都被子ViewPager消耗掉了,所以只能对ViewPager做一下自定义处理,才可以实现.以下是这个需求实现后的效果图: 从图上就可以看出:我们用ViewPager中嵌套了ViewPager,而且要实现的是子ViewPager滑动到最后一页时,再滑就是滑动父Vie

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

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

ViewPager嵌套禁止子ViewPager的滑动

重写父级的ViewPager的canScroll方法,返回false来屏蔽子View的滑动 //canScroll=false 屏蔽子view滑动事件 @Override protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { return false; } 原文地址:https://www.cnblogs.com/denluoyia/p/9753511.html

android listview左右滑动分页(viewpager嵌套listview进行分页),焦点图带圆焦点

1.先上图后说话 2.代码 package com.example.exmp; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import and

Android - 解决ViewPager嵌套时在API 13及其以下版本中不能滑动的问题

通过对ViewPager事件处理的分析发现解决此问题的关键点在于判断是否可以横向滑动的部分,也就是canScroll(View, boolean, int, int, int)方法 在此方法中先依次递归判断子View是否可以横向滑动,在最后一行则判断自己是否可以横向滑动.关键处在于调用了ViewCompat.canScrollHorizontally(View, int)方法来判断是否可以横向滑动.进一步查看ViewCompat.canScrollHorizontally(View, int)的

从ViewPager嵌套RecyclerView再嵌套RecyclerView看安卓事件分发机制

这两天伟大的PM下了一个需求,在一个竖滑列表里实现一个横向滑动的列表,没错,又是这种常见但是又经常被具有着强烈责任心和职业操守程序员所嗤之以鼻的效果,废话不多说,先上图: 实现的方式很多,因为项目中已经ViewPager+RV实现基本框架,所以现我也选择再添加一个RV实现相应的效果. 不过在写代码之前,先预估一下这个效果所有的坑. VP是横向滑动的,RV是竖向滑动的,那么现在再添加一个横向滑动的RV,肯定会有滑动冲突,主要表现在 VP和横向滑动RV 的冲突,因为两者都是横向滑动的,肯定有冲突,无

三层ViewPager嵌套 的事件处理

这么多ViewPager嵌套在一起肯定会遇到冲突 不信你试试(笑脸) 下面来说怎么解决.....太为难我这个菜b了 设置外部的父控件不要拦截我子控件的事件,通过重写ViewPager的 @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return false;//不拦截事件, 让嵌套的子viewpager有机会响应触摸事件 } 来决定 事件是否中断,返回true则子控件就不能滑动