更改ListView的高度以匹配EditText内容

时间:2018-08-15 00:54:42

标签: java android-studio listview android-edittext height

问题

我有一个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; } } 的高度更改为其内容的确切大小。 enter image description here enter image description here

0 个答案:

没有答案