Help.I发现了ListView的高度,我不知道px或dpi?我需要dpi
final ListView actualListView = mPullRefreshListView.getRefreshableView();
actualListView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
height = actualListView.getHeight();
}
});
答案 0 :(得分:29)
getheight返回高度(以像素为单位),以下是文档说的内容..
public final int getHeight ()
自:API Level 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;
}
答案 1 :(得分:1)
返回像素。 http://developer.android.com/reference/android/view/View.html#getHeight() 要将像素转换为dpi,请使用此公式px = dp *(dpi / 160)
答案 2 :(得分:1)
使用此代码可以获得运行时显示的宽度和宽度。高度
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
答案 3 :(得分: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()
}