我在ScrollView中有ListView(是的,我知道这是一个"坏主意"但是ListView有几个让这种方法变得可取的细节)我需要设置listView的高度滚动型。
在stackoverflow上发布的代码在某些情况下有效,我已经使用过它,但在这种情况下它不起作用,这就是我再次提出这个问题的原因。
我的ListView项目是单个TextView。然而,这个textview通常包含一个句子,因此包装。到目前为止发布的函数仅适用于单行元素。一旦它们走多线,它就无法正确计算高度。
public static void setListViewHeight(ListView listView)
{
ListAdapter myListAdapter = listView.getAdapter();
if (myListAdapter == null) {
return;
}
int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom();
int adapterCount = myListAdapter.getCount();
for (int i = 0; i < adapterCount ; i++) {
View listItem = myListAdapter.getView(i, null, listView);
listItem.measure(listView.getWidth(), MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}
//Change Height of ListView
ViewGroup.LayoutParams params = listView.getLayoutParams();
Drawable d = listView.getDivider();
params.height = (int)(totalHeight) + ((listView.getDividerHeight() +3 ) * (adapterCount - 1));
listView.setLayoutParams(params);
listView.invalidateViews();
listView.requestLayout();
}
我也尝试了这个功能的过度版本,结果相同。 listItem的高度总是(在我的情况下)57,与其中的文本无关。我正在寻找一种方法来正确计算高度。
样本高度数据: &#34;加热门锁&#34; :57 &#34;双体彩色加热电动后视镜带驱动器记忆/倒档激活乘客后视镜倾斜&#34;:57(占用3行文字)