我有一个ListView
,其行包含EditText
的{{1}}。当前,textMultiLine
的高度为ListView
。
当我在行wrap_content
中输入文本并且超出文本的正常高度时,该行的高度明显增加,但是EditText
的高度保持不变,从而使{{ 1}}可滚动。我不想滚动查看其所有内容,我希望listview动态更改其高度以匹配其内容。
我一直在使用此代码来更改ListView
的高度,但是由于某种原因,它无法测量ListView
内部的内容。它查看每个部分为空。因此,无论视图中有多少文本,其读数均为325像素。
ListView
这是我的意思的一个例子。请注意,在第二个图像中,您看不到项目#2。您必须在EditText
中向下滚动才能看到它。我正在尝试使public static boolean setListViewHeightBasedOnItems(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter != null) {
int numberOfItems = listAdapter.getCount();
// Get total height of all mItems.
int totalItemsHeight = 0;
for (int itemPos = 0; itemPos < numberOfItems; itemPos++) {
View item = listAdapter.getView(itemPos, null, listView);
item.measure(0, View.MeasureSpec.UNSPECIFIED);
Log.d("ListView","" + itemPos + " Height: " + item.getMeasuredHeight());
totalItemsHeight += item.getMeasuredHeight();
}
// Get total height of all item dividers.
int totalDividersHeight = listView.getDividerHeight() *
(numberOfItems - 1);
// Set list height.
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalItemsHeight + totalDividersHeight;
listView.setLayoutParams(params);
listView.requestLayout();
return true;
} else {
return false;
}
}
的高度更改为其内容的确切大小。