ScrollView嵌套ListView只显示一行解决方案
解决方案 显示 嵌套 一行 listview ScrollView
2023-09-27 14:23:19 时间
在ScrollView里边嵌套了个ListView,后边就发现数据源里好多数据,但ListView只是显示1行。
各种debug,打log,数据什么的都没问题,上网百度了下,发现原来是ScrollView嵌套ListView的一个Bug。
在ScrollView中嵌套ListView空间,无法正确的计算ListView的大小,故可以通过代码,根据当前的ListView的列表项计算列表的尺寸。
实现代码如下:
private void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
在ListView声明之后调用就可以了。
还有更简单的方法:不需要硬着算,只需要自定义ListView,重写下OnMeasured方法就好了
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, mExpandSpec);
}
相关文章
- uni-app - H5 页面路由不存在时,跳转到自己定制的 404.vue 页面(当路由不存在时自动重定向到自定义的 404 组件)超详细简约高效的解决方案
- 【解决方案】Typora上传博客图片无法显示解决方案
- 智能安全头盔技术解决方案之蓝牙音频开发总结
- 可穿戴智能手环解决方案之BLE的ADV广播协议解读
- 百度DMA+小度App的蓝牙语音解决方案技术难点解析
- iOS 如何做个电话簿App(解决方案)
- Selenium2学习-024-WebUI自动化实战实例-022-网站不同分辨率下页面样式展示兼容性问题解决方案 -- 设置浏览器显示区域大小(无人值守,节约测试成本的福音,BOSS 最爱)
- Windows下的Eclipse连接不上虚拟机上的hdfs,一直显示Listing folder content的解决方案
- 【Release Notes】Kubernetes解决方案更新
- 中文简体windows CMD显示中文乱码解决方案
- 2017年五种物联网架构解决方案
- 【系统运维】ubuntu 新建用户不能使用ll等指令,显示出来的信息没有颜色区分的解决方案 usermod -s
- 思科和VMware的SDN解决方案竟可同时选择
- Python中利用plt显示中文标题解决方案
- Python pip 自动更新升级失败解决方案
- AndroidStudio编译项目显示 error: failed linking file resources. 出现的原因及其解决方案
- 微软解释:为何会意外发布Windows 10 Build 16212以及解决方案
- 以色列RFID解决方案提供商BOS公司WMS系统获大订单