在android中以dp动态设置内容的大小

时间:2016-06-20 18:30:55

标签: java android

我是android的初学者。我正在创建一个动态生成大部分内容的应用程序。当我设置任何内容的大小(以像素为单位)时,它在我的设备上看起来很好(我正在测试)但是当我在其他设备上运行时(由于不同的dpi),它的大小不会保持不变。 如何在dp中设置内容的大小,使其自身调整为静态创建的内容?

示例 - 在我的设备上,我将某个按钮的大小设置为50像素。 如何设置大小以使其相应调整大小? 提前谢谢。

3 个答案:

答案 0 :(得分:0)

Here是您需要的答案。

简而言之,请使用:

/// Converts 14 dip into its equivalent px

Resources r = getResources();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 14, r.getDisplayMetrics());

答案 1 :(得分:0)

您需要添加一个实用程序函数,用于将dp转换为像素。

  public static int pxFromDp(final Context context, final float dp) {
        return (int)(dp * context.getResources().getDisplayMetrics().density);
    }

答案 2 :(得分:0)

您需要使用显示比例因子将其从dps转换为px。

final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);

然后动态设置像素值。

这个公式也在android文档中给出,如需进一步阅读,请查看以下链接:

https://developer.android.com/guide/practices/screens_support.html#screen-independence