动态设置ListView高度,解决跟ScrollView嵌套冲突
来源:互联网 发布:若蓝格杂志 知日 编辑:程序博客网 时间:2024/06/06 01:09
这篇文章说一个已经老掉牙的问题,但也算比较常见。
写一个布局的时候,难免会遇到界面中的控件已经超出了手机屏幕可显示的范围,这时候就需要在布局中放置一个ScrollView,使屏幕可以滚动。
当ScrollView中有ListView需要显示的时候,如果ListView是固定高度的,则可以显示正常;但如果ListView里面的数据是不定的,而ListView的高度也是随之变化的,嵌套在ScrollView中的ListView计算不出来高度,这是就会出现显示问题。
常见的现象就是:ListView只显示一行数据。
解决这个问题,就需要根据ListView中item的个数,通过代码动态设置ListView的高度。
动态设置高度对item布局有一个要求:item最外层布局需要是LinearLayout
具体该怎么写,附上一段代码,一看就懂
private void initView() { attachmentListView = (ListView) findViewById(R.id.attachmentList); if (attachmentList.size() > 0) { attachmentListView.setVisibility(View.VISIBLE); attachmentAdapter = new OAAttachmentAdapter(this, attachmentList); attachmentListView.setAdapter(attachmentAdapter); setListViewHeightByItem(attachmentListView); } }
private void setListViewHeightByItem(ListView listView) { if (listView == null) { return; } ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View item = listAdapter.getView(i, null, listView); //item的布局要求是linearLayout,否则measure(0,0)会报错。 item.measure(0, 0); //计算出所有item高度的总和 totalHeight += item.getMeasuredHeight(); } //获取ListView的LayoutParams,只需要修改高度就可以。 ViewGroup.LayoutParams params = listView.getLayoutParams(); //修改ListView高度为item总高度和所有分割线的高度总和。 //这里的分隔线是指ListView自带的divider params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); //将修改过的参数,重新设置给ListView listView.setLayoutParams(params); }
这样就可以通过item的个数动态设置ListView的高度了,从而解决了与ScrollView冲突问题。
阅读全文
0 0
- 动态设置ListView高度,解决跟ScrollView嵌套冲突
- scrollview与listview、gridview嵌套高度冲突解决思路
- 解决scrollView嵌套listview 冲突
- scrollview嵌套listView冲突解决
- scrollView嵌套listView,重新设置listview高度解决冲突,但打开activity之后,初始位置不是顶部解决方案
- 解决ScrollView嵌套listview动态设置高度时,item高度不一样时,最后一个item显示不完全
- ScrollView 嵌套listview解决listview高度问题
- Android笔记 四种方案解决ScrollView嵌套ListView问题之动态设置ListView高度代码整理
- 【Android基础学习】动态设置 listView的高度,解决scrollView中嵌套listview时显示不全的问题
- 解决listview跟ScrollView的嵌套
- 解决ScrollView嵌套ListView的冲突
- 解决scrollView嵌套listview的冲突问题
- ScrollView嵌套ListView冲突的解决
- ListView、GridView与ScrollView嵌套冲突解决
- 解决ScrollView 里面嵌套Listview 的冲突
- ScrollView嵌套ListView滑动冲突解决
- 解决ScrollView嵌套ListView滑动冲突
- Scrollview嵌套listview解决滑动冲突
- 2017北京世界食品博览会会刊(参展商名录)
- 当互联网连接速度快于存储写入速度时会发生什么?
- 【python基础知识】文件操作中的读写模式讲解
- API和系统调用函数的区别(个人理解)
- 阿里云优惠券:GPU云服务器实例低价狂欢
- 动态设置ListView高度,解决跟ScrollView嵌套冲突
- Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
- Mqtt入门之主题与主题过滤器
- 声卡采集
- echarts主题属性设置
- 动态规划 hrbust 1812
- 在国内访问Maven仓库,连接速度太慢。下面是将中央仓库替换成阿里云的中央仓库的方法。
- (转)机器学习实战第三章——决策树(源码解析)
- php时间戳转换