解决 ScrollView 嵌套 ListView 时,高度不正常和滑动冲突的问题

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

第二种是ScrollView不拦截滑动事件,当我们在ListView区域滑动时,由ListView处理滑动事件,只有在ListView已到达顶部还继续向上滑或者ListView已到达底部还继续向下滑时才重新拦截滑动事件。而当我们在非ListView区域滑动时,则直接由ScrollView处理滑动事件,那么我们看看怎么实现这种效果。

首先,我们先了解为什么ListView无法获取到滑动事件,我们先看一下ScrollView的onInterceptTouchEvent方法

[java] view plain copy

print ?

  1. @Override

  2. public boolean onInterceptTouchEvent(MotionEvent ev) {

  3. final int action = ev.getAction();

  4. if ((action == MotionEvent.ACTION_MOVE) && (mIsBeingDragged)) {

  5. return true;

  6. }

  7. 省略

  8. //………

  9. }

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

final int action = ev.getAction();

if ((action == MotionEvent.ACTION_MOVE) && (mIsBeingDragged)) {

return true;

}

省略

//…

}

不重要的部分被我省略了,mIsBeingDragged是最小滑动像素,超过这个值才被认为是发生滑动了。那从上面的代码我们可以看出的,当发生滑动的第一时间,事件就被ScrollView拦截了,所以ListView不能滑动

但是我们注意到,在MotionEvent.ACTION_MOVE之前是会产生一个MotionEvent.ACTION_DOWN的,那么这个事件是没有被拦截的,并且在滑动未超过最小像素之前,

MotionEvent.ACTION_MOVE也是未被拦截的,那么其实我们是可以在ListView里面接收到MotionEvent.ACTION_DOWN和几个MotionEvent.ACTION_MOVE的。

既然如此,那我们在自定义ListView里面请求ScrollView不要拦截事件不就好了吗。

[java] view plain copy

print ?

  1. public class MyListview extends ListView{

  2. private ScrollView mParent;

  3. private float mDownY;

  4. public MyListview(Context context) {

  5. super(c

ScrollViewFragment中的ListView、WebView滑动冲突问题解决 日常开发中很少会碰到ScrollView嵌套listview或webview的情况,而且谷歌官方也推荐这么做,但是也是一定会有这样的需求,毕竟定需求的是我们程序员,而是产品经理。比如像下面这种需求:        可以看到,整个页面有一个共同的头部,下面有两个tab,左边tab下是个可以滚动的webview,右边是个listview。要求listviewwebvi 阅读详情

相关推荐

ScrollViewListViewAndroid开发中常用的UI组件,它们都用于展示大量的数据并支持滚动

默认情况下,ScrollView会拦截所有的滚动事件,导致ListView无法正常滚动。请注意,在某些情况下,禁用ScrollView对滚动事件的拦截可能会导致其他滚动效果的问题,如水平滚动或多个嵌套滚动视图的情况。为了解决ScrollView嵌套ListView的滚动冲突问题,我们需要禁用ScrollView对滚动事件的拦截,从而让ListView能够正常滚动。这样,通过禁用ScrollView对滚动事件的拦截,我们就能够让嵌套ScrollView中的ListView正常滚动。

CodeSpark的博客 229

ScrollView嵌套RecyclerView滑动冲突问题解决方案

具体表现为,当我们在RecyclerView上滑动,可能会导致ScrollView无法滑动,或者当我们在ScrollView滑动,RecyclerView无法滑动。在重写的方法中,我们根据手指滑动的方向请求父容器是否拦截触摸事件,从而实现了滑动正常交互。如果是垂直滑动,我们请求父容器拦截触摸事件,以便让ScrollView处理滑动事件。在这个示例布局中,我们将ScrollView作为父容器,包裹了一个LinearLayout,然后在LinearLayout中放置了自定义的RecyclerView。

2301_79366332的博客 1177

Android解决ScrollView嵌套RecycleView导致滑动冲突或者显示全的问题

1 问题 ScrollView嵌套RecycleView导致滑动冲突或者显示全的问题 2 解决办法 1)、ScrollView替换成普通布局,然后RecycleView用的BaseMultiItemQuickAdapter多布局来写,也就是整个页面只有一个RecycleView,用来取代ScrollView,但是这样比较复杂。 2)、对ScrollViewRecycleView的isNestedScrollingEnabled的值设置成false scrol...

码莎拉蒂 5039

四种方法解决ScrollView嵌套listview滑动冲突问题

在工作中,曾碰到过多次scrollView嵌套listview问题,网上的解决办法很多,但大都是杂而全,在这里,我从使用scrollview嵌套listview结构的原因、这个结构碰到的问题、几种解决方案优缺点比较,这4个方面来给大家阐述、分析、总结。 其实光是listview,其他继承自AbsListView的类也适用,包括ExpandableListView、Gridview等,为了

csuhanshuai的专栏 1908

四种方案解决ScrollView嵌套ListView问题

From:http://blog.sina.com.cn/s/blog_46798aa80101lxbk.html

MaximusKiang的专栏 978

解决 ScrollView 嵌套 ListView ,高度正常滑动冲突问题(1)

现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!**任何市场都是优胜略汰适者生存,只要你技术过硬,到哪里都存在饱问题,所以重要的还是提升自己。但是我们注意到,在MotionEvent.ACTION_MOVE之前是会产生一个MotionEvent.ACTION_DOWN的,那么这个事件是没有被拦截的,并且在滑动未超过最小像素之前,//重写该方法 在按下的候让父容器处理滑动事件。

2401_84092068的博客 545

ScrollViewListView 以及 GridView 滑动冲突完美解决

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34176694的博客 285

ListViewScrollView嵌套解决滑动冲突问题

首先,说明一下,我这里的ListViewScrollView都是上下滑动的,如果是左右滑动,虽然差距大,但就能直接生搬硬套了。 1.解决ListViewScrollView嵌套滑动冲突问题ListView放在ScrollView的布局中间,直接实现ListView的setOnTouchListener就可以了 listView.setOnTouchListener(new Vi...

ALee_130158的博客 2441

解决ScrollView嵌套ListView显示完全滑动冲突问题

在开发中我们往往会遇到这样奇葩的需求,让一个ScrollView嵌套ListView,那么我们就会遇到这样一个问题,就是listView 显示完全滚动冲突问题。下面就来解决一下这个问题 首先看一下布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_

snow_anderson的博客 2464

Android view嵌套滑动冲突解决方案(一scrollview嵌套listview滑动冲突高度正常问题

近段间,自己在做之前项目经验的一些总结,也刚好今天有个刚进入Android开发没多久的伙计问我塔项目中遇到的滑动冲突问题,就是scrollView嵌套listview。今天帮他解决问题的同也记录下自己之前项目中遇到的冲突解决方案。首先我们来看下滑动冲突的原因:借助任玉刚刚哥的《Android开发艺术探索》这本书,可以参考155到157页,同也可以看下140页到154页的view的分发事...

smxueer的专栏 1245

Android ScrollView嵌套ListView 滑动冲突问题解决方法

1、自定义ScrollView类,处理事件分发 /** * 解决scrollview嵌套listview造成滑动冲突问题 * Created by xl on 2019/1/25. */ public class ListScrollView extends ScrollView { private ListView listView; public ListScr...

沧海龙腾LV的博客 1496

Listview嵌套Listview或者ScrollView嵌套Listview【显示完整滑动冲突

问题描述 解决方法 ScrollView布局中嵌套Listview显示正常 1自定义一个Listview继承自Listview 2重新计算Listview高度Listview嵌套Listview滑动冲突 效果 问题描述: 一个滑动控件或布局里面,添加另外一个可以滑动的控件; 工作中遇到的,在ScrollView布局中嵌套Listview显示正常Listview嵌套Listview滑动冲突问题解决方法: 1.ScrollView布局中嵌套Li

Venus 的博客 854

完美解决ScrollView嵌套ListView滑动冲突(有图有真相)

(转载请保留原文地址  csdn yang http://blog.csdn.net/lys701/article/details/8755373) 最近在android开发中,需要在ScrollView里面嵌套ListView嵌套之后发现滑动冲突。问google问度娘,得出的很多答案都是设置listView高度,让所有的item都显示出来,我觉得这是一种很好的解决办法。在试过了很多次之后

lys701的专栏 7794
上一篇: 深入理解 Android 消息机制
下一篇: 17章MySQL:触发器
disrm84160
博客等级 码龄3年 3942粉丝 383原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值