`
- 浏览:
2053 次
- 性别:
- 来自:
安徽
-
ScrollView 嵌套 ViewPager导致滑动冲突解决方案
解决方案1:
自定义Viewpager做为子控件
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();
}
}
/**
* 创建点击事件接口
* @author wanpg
*
*/
public interface OnSingleTouchListener {
public void onSingleTouch();
}
public void setOnSingleTouchListener(OnSingleTouchListener onSingleTouchListener) {
this.onSingleTouchListener = onSingleTouchListener;
}
} [align=center][/align]
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
然而,当ScrollView嵌套ViewPager时,可能会遇到一些问题,这些问题主要集中在内容无法正常显示和滑动冲突上。 首先,我们来探讨为什么ScrollView嵌套ViewPager会导致ViewPager中的内容无法显示。这主要是因为...
ScrollView嵌套ViewPager,ViewPager横向滑动时容易上下滚动处理; ScrollView嵌套ListView,ListView滚动事件处理,可滚动; ScrollView子控件获取焦点后自动置顶问题处理。 ListView滚动到顶或到底事件监听。
本示例“ScrollView嵌套ViewPager,可滑动,可动态设置ViewPager高度”就巧妙地解决了这两个组件的结合问题。 首先,让我们详细了解一下ScrollView。ScrollView是一个可滚动的视图容器,它只允许垂直方向的滚动。当...
一个特效Demo 具体看博客http://blog.csdn.net/liubo20140401/article/details/47907039 一个向上滑动 tab固定顶部 scrollview中嵌套viewpager嵌套listview 还有回到顶部
亲测成功,可以直接嵌套项目中 ScrollView嵌套TabLayout+ViewPager解决滑动冲突,已进行重点标注 ViewPager会根据frament的界面高度进行展示,进行framnet的高度测量 嵌套冲突已全部解决
本示例"scrollview嵌套viewpager嵌套fragmetn嵌套recyclerview的demo"正是为了解决这些问题,并展示如何优雅地处理这些组件的嵌套。 首先,`ScrollView`是一个可滚动的容器,它可以包含一个或多个视图,允许用户...
综上所述,虽然在ScrollView中嵌套ViewPager和ListView可能带来一些挑战,但通过合理的设计和配置,我们可以有效地解决这些问题,实现预期的功能。在Android开发中,理解并掌握这些技术可以帮助我们构建更加灵活和...
ViewPager,ScrollView 嵌套ViewPager滑动冲突解决 这篇博客主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌套ViewPager导致的滑动冲突 ViewPager里面嵌套...
当需要在一个页面中同时展示多个可滑动的视图,并且整个页面还需要支持垂直滚动时,开发者可能会尝试将ScrollView和ViewPager进行嵌套。然而,这种组合往往会导致一些问题,因为它们的滚动机制存在冲突。 在...
这样,`ScrollView` 就成为了`ViewPager` 的一个单独的、可滚动的页面,滑动冲突得以解决。 - **使用NestedScrollView**:如果项目支持API 21及以上,可以考虑使用`NestedScrollView` 替换`ScrollView`。`...
当ScrollView嵌套ViewPager和/或ListView时,主要问题有以下几点: 1. **滚动冲突**:由于ScrollView和ViewPager/ListView都具备滚动功能,它们之间的滚动事件可能会相互干扰,导致无法正常滚动或者滚动体验极差。 ...
在这个"ScrollView兼容ViewPager代码demo"中,开发者可能面临的问题是如何在ScrollView内嵌入一个ViewPager,因为这两个组件本身都支持滚动,所以在组合使用时可能会产生冲突,导致滚动行为不正常。解决这个问题的...
2. 不同方向滑动冲突:比如ScrollView嵌套ViewPager的情况,ScrollView通常是垂直滑动,而ViewPager则是水平滑动。这种冲突在于,当用户尝试在一个方向上滑动时,可能会触发另一个方向的滑动。在微信等应用中,底部...
"ScrollViewChildViewpager201605122134在ScrollView中嵌套Viewpager.zip"这个压缩包提供了一个示例,展示了如何在ScrollView中正确地嵌套使用ViewPager,同时解决了两者之间可能出现的焦点冲突问题,并且优化了...
Scrollview中嵌套ViewPager和ListView常出现的问题: ViewPager如果在Scrollview中使用,并且宽高指定为match_parent或者wrap_content则不会显示内容,但是如果将高度指定为200dp,则ViewPager则会将内容显示到屏幕...
2. **使用NestedScrollView替换ScrollView**:NestedScrollView是Android提供的一个可以嵌套滑动的组件,它可以更好地与ViewPager协同工作。在NestedScrollView中,你可以设置`nestedScrollingEnabled`属性为`true`...
手动实现仿京东发现页面效果,使用布局嵌套完成,包括ScrollView+TabLayout+ViewPager+RecyclerView,最后有遗留问题需要处理。详情见博客https://blog.csdn.net/hq942845204/article/details/88844272
通过上述策略的组合使用,开发者可以有效地解决ScrollView、ListView和ViewPager滑动不冲突的问题,提高应用的用户体验。在实际开发中,应根据项目需求和具体情况灵活选择合适的方法,确保滑动操作的顺畅和一致性。
3. **禁用默认滚动行为**:有时,内部的NestedScrollView或其他可滚动视图可能会与ViewPager的滑动冲突,这时我们需要禁用内部视图的默认滚动行为,如设置`android:nestedScrollingEnabled="false"`。 4. **监听...
当在一个ScrollView中嵌套一个RecyclerView时,可能会遇到一些常见问题,例如滚动冲突、性能下降等。本篇文章将详细探讨这些问题以及解决方案。 1. 滚动冲突 当ScrollView与RecyclerView同时存在时,两者都会尝试...