ListView 动态设置高度问题
2016-09-20 11:04
323 查看
今天开发遇到一个问题,就是当动态插入ListView数据的时候,由于之前ListView的高度已经固定死了,所以显示不完整的数据,并且底部显示黑边。如图:
![](http://img.my.csdn.net/uploads/201212/04/1354610610_9494.png)
而我希望这个ListView可以动态的改变高度:
![](http://img.my.csdn.net/uploads/201212/04/1354610616_4662.png)
当时第一个想到的解决办法就是在setAdapter之后去重新修改ListView的高度,但是发现设置match_parent或wrap_content没有效果,只能设置一个固定的高度。但是显然我的数据长度是不定的,所以设置固定高度不显示。
最后采用的办法是:
[java] view
plain copy
public void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
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()
c07e
* (listAdapter.getCount() - 1));
((MarginLayoutParams) params).setMargins(10, 10, 10, 10); // 可删除
listView.setLayoutParams(params);
}
[html] view
plain copy
<ListView
android:id="@+id/getInfo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#FFF4F4F4"
android:dividerHeight="0.0dip"
android:fadingEdge="none" // 边界黑边
/>
转自:
http://blog.csdn.net/h3c4lenovo/article/details/8256472
![](http://img.my.csdn.net/uploads/201212/04/1354610610_9494.png)
而我希望这个ListView可以动态的改变高度:
![](http://img.my.csdn.net/uploads/201212/04/1354610616_4662.png)
当时第一个想到的解决办法就是在setAdapter之后去重新修改ListView的高度,但是发现设置match_parent或wrap_content没有效果,只能设置一个固定的高度。但是显然我的数据长度是不定的,所以设置固定高度不显示。
最后采用的办法是:
[java] view
plain copy
public void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
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()
c07e
* (listAdapter.getCount() - 1));
((MarginLayoutParams) params).setMargins(10, 10, 10, 10); // 可删除
listView.setLayoutParams(params);
}
[html] view
plain copy
<ListView
android:id="@+id/getInfo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#FFF4F4F4"
android:dividerHeight="0.0dip"
android:fadingEdge="none" // 边界黑边
/>
转自:
http://blog.csdn.net/h3c4lenovo/article/details/8256472
相关文章推荐
- Android笔记 四种方案解决ScrollView嵌套ListView问题之动态设置ListView高度代码整理
- ListView 动态设置高度问题
- (4.3.2.2)ListView 动态设置高度问题
- ListView 动态设置高度问题
- ScorllView嵌套ListView时动态设置高度时的问题
- 【Android基础学习】动态设置 listView的高度,解决scrollView中嵌套listview时显示不全的问题
- ListView 动态设置高度问题
- ScorllView嵌套ListView时,动态设置ListView高度时的问题.
- ListView 动态设置高度问题
- 通过动态设置ListView高度来解决ScollView与ListView互相嵌套的问题
- 通过动态设置ListView高度来解决ScollView与ListView互相嵌套的问题
- android 关于listview item设置高度的问题解决方法
- ListView的item高度问题及分割线的颜色设置
- Item高度固定下动态设置ListView的高度
- ListView中根据手机屏幕高度动态设置只显示一屏幕的item个数
- Android listView的展开与收起实现折叠,及动态设置子ListView的高度
- 【Android】Item高度固定下动态设置ListView的高度
- Android在ScrollView中嵌套ListView,ListView高度设置问题
- 动态设置ListView可以显示的高度
- scrollview嵌套listview时 动态设置listview高度