如何在项目为文本和换行时正确计算ListView高度

时间:2014-06-25 21:41:47

标签: android listview android-listview

these StackOverflow questions

未解决此问题

我在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行文字)

0 个答案:

没有答案