android - getMeasuredHeight() 以像素或 dp 为单位返回值

标签 android listview view

我正在尝试以编程方式获取 ListView 中项目的高度。所以我在我们的网站上提到了一些电子邮寄,我得出了以下代码

    private float calcListViewItemsHeight(ListView listView) {
    Log.d(TAG, getApplicationContext().getResources().getResourceEntryName(listView.getId()) + ".getCount() :" + listView.getCount());

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

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

    Log.d(TAG, getApplicationContext().getResources().getResourceEntryName(listView.getId()) + "totalHeight in px: " + height);

    float dp = this.px2dp(height);
    Log.d(TAG, getApplicationContext().getResources().getResourceEntryName(listView.getId()) + "totalHeight in dp: " + dp);

    return dp;
    //return height;
}

从上面的代码返回的值,应该以像素为单位,这意味着我必须将它转换为 dp,这样我的代码才能在不同的屏幕尺寸上正常工作。 从像素转换为 dp 我使用了以下 gcode:

private float px2dp(int pxVal) {
    float density = this.getResources().getDisplayMetrics().density;

    return (pxVal/ density);
}

现在,由于我的列表包含 4 个项目,我得到以下 logCat 输出,它表示 ListView 中包含的项目数以及 ListView 的像素和 dp 高度,此结果来自 上面发布的“calcListViewItemsHeight”

12-10 10:27:40.817 D/VersDetailActivity2: versicherungsListeActivity2mod_lisVie_versDetails.getCount() :4
12-10 10:27:40.822 D/VersDetailActivity2: versicherungsListeActivity2mod_lisVie_versDetailstotalHeight in px: 533
12-10 10:27:40.822 D/VersDetailActivity2: versicherungsListeActivity2mod_lisVie_versDetailstotalHeight in dp: 266.5

我无法理解的是,当“calcListViewItemsHeight”方法返回“高度”时,我得到了高度 ListView ,如 img_1 所示,但如果“calcListViewItemsHeight”返回“dp”,我得到了高度 ListView 如图img_2

“getMeasuredHeight()”返回的值是 dp 还是像素?

img_1:

enter image description here

img_2:

enter image description here

最佳答案

Documentation说返回值是“这个 View 的原始测量高度”。来自here “原始”表示像素。并且可能是 this链接也可以帮助您。

关于android - getMeasuredHeight() 以像素或 dp 为单位返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41074237/

相关文章:

android - 如何在android中将drawable设置为ListView

PHP - 在数据库中存储页面 View 的最佳实践

java - 无法获取提供商 com.google.android.gms.measurement.AppMeasurementContentProvider

java - 适用于 Android、Java、iPhone、Windows Mobile 的签名算法

java - 启动蓝牙适配器而不弹出

android - 设置 ImageView 的权重和参数

android - Android 中的偏斜矩阵

android - 新的Android/iOS操作系统上线,我们需要升级应用,会发生什么样的变化?

android - android中的自定义微调器弹出列表

android - 修改listview tem OnActivityResult