ScrollView 嵌入Listview,当Listview中的Textview文本多行,高度如何重新计算
2017-03-28 21:59
465 查看
如果Listview的Item高度是动态的,例如包含Textview并且超过一行的情况下,如果继续用以上两种方法,那么计算的只是一行TextView的高度
所以这里给了一个很简单的方法,如下:
// 动态改变listView的高度 ,解决TextView超过一行,高度只计算一行的问题
public int setListViewHeightBasedOnChildren(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return 0;
}
int totalHeight = 0;
int listViewWidth = ConstValue.screenWidth (屏幕宽度)- Tool.convertDpToPx(this, 12)(dp转PX);//listView在布局时的宽度 ,screenWidth - 左右的padding - 左右的margin
int widthSpec = View.MeasureSpec.makeMeasureSpec(listViewWidth, View.MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
// 计算子项View 的宽高
listItem.measure(widthSpec, 0);
// 统计所有子项的总高度
int itemHeight = listItem.getMeasuredHeight();
totalHeight += itemHeight;
System.out.println("listView.totalHeight: " + totalHeight + " itemHeight: " + itemHeight);
}
int historyHeight = totalHeight + (listView.getDividerHeight() * listAdapter.getCount() - 1);
// listView.getDividerHeight()获取子项间分隔符占用的高度
System.out.println("listViewHeight = " + historyHeight);
return historyHeight;
}
所以这里给了一个很简单的方法,如下:
// 动态改变listView的高度 ,解决TextView超过一行,高度只计算一行的问题
public int setListViewHeightBasedOnChildren(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return 0;
}
int totalHeight = 0;
int listViewWidth = ConstValue.screenWidth (屏幕宽度)- Tool.convertDpToPx(this, 12)(dp转PX);//listView在布局时的宽度 ,screenWidth - 左右的padding - 左右的margin
int widthSpec = View.MeasureSpec.makeMeasureSpec(listViewWidth, View.MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
// 计算子项View 的宽高
listItem.measure(widthSpec, 0);
// 统计所有子项的总高度
int itemHeight = listItem.getMeasuredHeight();
totalHeight += itemHeight;
System.out.println("listView.totalHeight: " + totalHeight + " itemHeight: " + itemHeight);
}
int historyHeight = totalHeight + (listView.getDividerHeight() * listAdapter.getCount() - 1);
// listView.getDividerHeight()获取子项间分隔符占用的高度
System.out.println("listViewHeight = " + historyHeight);
return historyHeight;
}
相关文章推荐
- ScrollView 嵌入Listview,当Listview中的Textview多余一行,高度如何重新计算
- 计算ListView的高度终极版,考虑到多行textview的情况
- 关于ScrollView中嵌套listView,textView存在多行时,listView高度计算不正确。
- 计算ListView的高度终极版,考虑到多行textview的情况
- android中textview设置为多行文本时,如何让文字从最顶开始显示
- android scrollview 嵌套listview 或者listview嵌套listview 计算子view高度
- 自定义TextView,解决文字换行,\n换行符换行,导致高度计算不对问题(计算ListView高度)
- textview的contentsize.height不能准确判断高度,尤其是在文本中同时包含中英文时,如此便不能高度自适应,求解如何textview自适应
- ScrollView与ListView合用(TextView多行显示时计算不正确)的问题解决
- scrollview中嵌入listview动态计算listview的高度
- android ScrollView 里嵌套listview listview 重新计算高度
- android中textview设置为多行文本时,如何让文字从最顶开始显示
- scroll嵌套多个listview,listview中的TextView超过一行,只计算 一行高度
- ScrollView中嵌套ListView,TextView只显示一行的高度解决方案
- ScrollView 与 LiswView 共存时显示高度计算问题
- Android如何在一个TextView中实现多种文本风格?
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- Android 当ScrollView里面嵌套Listview时计算高度
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- android textview 多行文本显示 scroll滑动实现