繁体   English   中英

测量listview项目的高度

[英]Measure height of listview items

我想在渲染之前测量ListView中每个项目的高度。

我将此方法添加到我的自定义ListView

public void measureItemsHeight() {
    mItemCount = getAdapter().getCount();

    if(mItemOffsetY == null){
        mItemOffsetY = new int[mItemCount];
    }

    for(int i = 0; i < mItemCount; ++i){
        View view  = getAdapter().getView(i, null, this);  
        view.measure(0, 0);  
        mItemHeight[i] = view.getMeasuredHeight();
    }
}

然后,在我的活动的onCreate()

mListView.getViewTreeObserver().addOnGlobalLayoutListener(
    new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            mListView.measureItemsHeight();
        }
    }
);

我得到的值与getHeight()报告的值不同,例如getMeasuredHeight()返回48, getHeight()返回72。

我用于项目的布局是simple_list_item

它看起来像hdpi和xhdpi问题,有没有办法解决这个问题? 我用来调试的设备是三星SGS2,也许这就是问题所在。

我建议你使用自定义列表,为列表行制作单独的布局。
将以下属性分配给该视图布局: android:layout_height=wrap_content
而已。
祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM