15

Help.我找到了 ListView 的高度,我不知道 px 或 dpi?我需要dpi

final ListView actualListView = mPullRefreshListView.getRefreshableView();

actualListView.getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {
                    public void onGlobalLayout() {
                        height = actualListView.getHeight();  

                    }
                });
4

4 回答 4

37

getheight 以像素为单位返回高度,下面是文档所说的..

  public final int getHeight ()

自:API 级别 1

返回视图的高度。退货

视图的高度,以像素为单位。

您需要将 px 转换为 dp ,使用以下方法将其转换为 dp。

将像素转换为 dp:

public int pxToDp(int px) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    int dp = Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
    return dp;
}

或者如果你想在 px 中使用它。

将 dp 转换为像素:

public int dpToPx(int dp) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));       
    return px;
}
于 2012-08-08T10:23:51.820 回答
2

它返回像素。 http://developer.android.com/reference/android/view/View.html#getHeight() 要将像素转换为 dpi,请使用此公式 px = dp * (dpi / 160)

于 2012-08-08T10:22:46.403 回答
1

使用此代码,您可以获得运行时显示的宽度和高度

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
于 2012-08-08T10:25:00.843 回答
1

将 dp 转换为 px 和 px 转换为 dp 的函数应如下所示(在 kotlin 中):

fun convertDpToPx(dp: Int): Int {
    val metrics = Resources.getSystem().displayMetrics
    return dp * (metrics.densityDpi / 160f).roundToInt()
  }

fun convertPxToDp(px: Int): Int {
  val metrics = Resources.getSystem().displayMetrics
  return (px / (metrics.densityDpi / 160f)).roundToInt()
}
于 2020-05-20T10:07:53.360 回答