Android中使用ScrollView内嵌ListView出现显示不完全问题
来源:互联网 发布:斗鱼免费刷火箭软件 编辑:程序博客网 时间:2024/05/20 05:08
前言
该问题是一个经常会碰到的问题,之前是只用在一个布局文件中,所以写死固定高度凑合也能用,但是当使用ScrollView内嵌ListView写成一个自定义控件无法判断高度时这种方法就不适用了。下面介绍一个很简单的方法一次性替换,永久无忧~
解决方案
public class NoScrollListView extends ListView{ public NoScrollListView(Context context){ super(context); } public NoScrollListView(Context context, AttributeSet attrs, int defStyle){ super(context,attrs,defStyle); } 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); }}
该自定义控件只是重写了listview控件的onMeasure方法,使其不会出现滚动条的同时,获得充分的高度。
说明(引用MeasureSpec中三种模式)
假如此处采用
int expandSpec = MeasureSpec.makeMeasureSpec(1000>>2,MeasureSpec.AT_MOST);
1000的二进制:1111101000
右移2位后:11111010,十进制为:250
这样就指定了listview的高度为250px以内的最大允许值(一般就是250)
把AT_MOST改为EXACTLY,则精确指定listview高度值为250px,如果listview内容全部显示的高度为500px(大于250px),那么当measureSpec中size的值为250px(小于500px)时,效果是一样的
如果设置的measureSpec中size的值大于listview内容全部显示的高度,那么设置成AT_MOST时,最多显示listview内容全部显示的高度,而EXACTLY还是显示measureSpec中size的值,所以EXACTLY在这种情况下,后面会留有空白高度(measureSpec中size的值大于listview内容全部显示的高度的部分显示为空白)
所以,一般这样写可以让listview正确测量:
int width = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
MAX_VALUE右移2位后,即使不是最大整数了,listview的高度也一般不可能超过它。
第一个参数有个最大值的限制:1073741823(二进制的30个1),MAX_VALUE是1个0加上31个1(二进制),所以也可以右移1位,但是由于最前面两位表示mode,而不是size,所有右移1位和右移2位是一样的(前面两位的值都会被mode的代码覆盖)
- Android中使用ScrollView内嵌ListView出现显示不完全问题
- 关于ScrollView中使用listview后listview不完全显示问题
- Android 解决scrollview中嵌套listview、GridView显示不完全问题
- Scrollview中嵌套listview,显示不完全
- android ScrollView中嵌套ListView显示问题
- android中Scrollview 嵌套ListView显示问题
- Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案
- 【Android】【控件】ScrollView嵌套ListView,GridView显示不完全的解决方案
- ScrollView内展示ListView显示不完全(只显示一个Item)
- android中ScrollView嵌套ListView只显示一条item问题
- ScrollView嵌套listView显示不完全对应解决方案
- ScrollView嵌套ListView数据显示不完全解决办法
- ScrollView和ListView嵌套显示不完全
- Android的ScrollView下嵌套GridView显示不完全问题处理
- Android中在ScrollView中显示ListView
- ScrollView中listview显示不全的问题
- ScrollView中嵌套ListView/ExpandableListView显示问题
- ScrollView 中嵌套ListView显示问题
- java线程面试题
- [shell]截取字符串
- azkaban简单实用
- 聊聊HTTPS和SSL/TLS协议 很精简
- OpenJudge百炼-1191-棋盘分割-C语言-动态规划
- Android中使用ScrollView内嵌ListView出现显示不完全问题
- 《七大排序算法》(Java实现)
- open-falcon 上传数据时间间隔设置1s
- 欢迎使用CSDN-markdown编辑器
- 9 正则表达式
- Codeforces Round #387 (Div. 2) D. Winter Is Coming
- 分布式跟踪系统(一):Zipkin的背景和设计
- 数据库基础知识总结
- Don't Make Me Think(中文 第二版)pdf