Android ScrollView与ListView冲突解决_ScrollView内嵌套ListView时禁止ListView的滚动
程序员文章站
2022-03-01 15:01:08
...
今天在做项目的时候、遇到一个问题、那就是使用了ScrollView内嵌套ListView
ScrollView内嵌套ListView时不知道为什么ListView高度很小只能显示一行数据
网上有说是因为ScrollView和ListView之间冲突导致的
禁止ListView的滚动事件时可以解决该问题、只让ScrollView可以滚动
解决方法是自定义ListView、xml布局文件中使用该自定义的ListView
public class NotScrollListview extends ListView{ public NoScrollListview(Context context, AttributeSet attrs) { super(context, attrs); } //设置不滚动 public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }重写这个方法之后、这样就可以解决ScrollView内嵌套ListView的冲突了
优点是完全解决了ScrollView嵌套ListView的问题、同时代码较少、你甚至可以直接使用LinearLayout
而在Activity中手动为LinearLayout添加子项控件、不过需要注意的是、在添加前需要调用其removeAllViews的方法
否则可能会出现预想不到的事情、那时你会想念天国的ListView的、缺点不是很明显、但还是有两个
一是使用的不是系统控件、不能在xml布局的Graphical Layout视图中直接看到效果
二是不能向ListView那样可以使用ViewHolder结构、在加载大量子项时会费很多时间在findViewById中
如果你的列表数据比较少的话、不妨试试这个方法
除了不能使用ViewHolder结构、使用方法几乎和ListView一样
推荐阅读
-
Android ListView与ScrollView冲突的解决方法总结
-
Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题
-
Android之ScrollView嵌套ListView和GridView冲突的解决方法
-
[Android] Android最简单ScrollView和ListView滚动冲突解决方案
-
[Android] Android最简单ScrollView和ListView滚动冲突解决方案
-
Android ScrollView与ListView冲突解决_ScrollView内嵌套ListView时禁止ListView的滚动
-
ScrollView中嵌套ListView滚动冲突的两种解决方案