首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓-获取ListView项目高度?

安卓-获取ListView项目高度?
EN

Stack Overflow用户
提问于 2010-07-29 18:17:20
回答 4查看 35.1K关注 0票数 18

当列表中没有实际的项目时,有没有办法在代码中获取ListViewItem的高度?

我的ListViewItem布局:

代码语言:javascript
复制
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight">
...
</LinearLayout>  

我试着用充气器来获得它:

代码语言:javascript
复制
View convertView = LayoutInflater.from( this )
    .inflate( R.layout.mail_list_row, null );
int itemHeight = convertView.getHeight();

但它返回0;

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-29 21:23:44

在android中,视图只有在渲染完成时才会分配宽度和高度。所以,除非你的list至少呈现一次,否则你不会得到listItemHeight。问题的解决方案可能是设置列表项的最小高度,以便至少有一些东西可用,而不是硬编码高度和宽度。

票数 5
EN

Stack Overflow用户

发布于 2012-09-20 21:39:21

试试这个,它会对你有用的。

代码语言:javascript
复制
private static final int UNBOUNDED = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);

// To calculate the total height of all items in ListView call with items = adapter.getCount()
public static int getItemHeightofListView(ListView listView, int items) {
    ListAdapter adapter = listView.getAdapter();

    int grossElementHeight = 0;
    for (int i = 0; i < items; i++) {
        View childView = adapter.getView(i, null, listView);
        childView.measure(UNBOUNDED, UNBOUNDED);
        grossElementHeight += childView.getMeasuredHeight();
    }
    return grossElementHeight;
}
票数 44
EN

Stack Overflow用户

发布于 2014-10-07 20:57:31

Dwivedi Ji代码的优化版本,带有分隔符高度,没有不必要的参数:

代码语言:javascript
复制
private int calculateHeight(ListView list) {

    int height = 0;

    for (int i = 0; i < list.getCount(); i++) {
        View childView = list.getAdapter().getView(i, null, list);
        childView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        height+= childView.getMeasuredHeight();
    }

    //dividers height
    height += list.getDividerHeight() * list.getCount();

    return height;
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3361423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档