android viewpager滑动与slidingpanelayout冲突怎么解决

 我来答
尚猎猩
2016-10-23 · 超过39用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:38.9万
展开全部
ListView中嵌套ViewPage有或者滑动手势冲突解决

在listview 上使用 addHeaderView 在第一栏添加 viewpager 当做header
如:

当触发 滑动事件 的时候容易引起 滑动冲突 (比如斜着滑动viewpager 的时候 listview会跳动)
特别是在 下拉刷新或者上拉加载 的时候 , 组件可能会传递到viewpager当中

查阅了很多的帖子 发现修改起来都非常麻烦

(1)解决方案
1. 针对viewpager 做了些修改
替换掉support.v4当中的viewpager即可:

[java] view plain copy
package com.example.bz_viewpager;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewGroup;

/**
* viewpage 和listview 相互冲突 将父view 传递到viewpage 里面
*
* 使用父类的方法 parent.requestDisallowInterceptTouchEvent(true);
*
* 当 requestDisallowInterceptTouchEvent 如果为true的时候 表示:父view 不拦截子view的touch 事件
*
* 这个方法只是改变flag
*
* @author baozi
*
*/
public class DecoratorViewPager extends ViewPager {
private ViewGroup parent;

public DecoratorViewPager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

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

public void setNestedpParent(ViewGroup parent) {
this.parent = parent;
}

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
return super.dispatchTouchEvent(ev);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
return super.onInterceptTouchEvent(arg0);
}

@Override
public boolean onTouchEvent(MotionEvent arg0) {
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
return super.onTouchEvent(arg0);
}

}
difade
2016-10-18 · 超过61用户采纳过TA的回答
知道小有建树答主
回答量:133
采纳率:100%
帮助的人:95.4万
展开全部
学下事件分发,(设置条件)拦截其中一个的滑动事件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式