如何在安卓应用程序运行时以dp为单位设置按钮的宽度?

3

我有一个安卓应用程序,其中有很多按钮,但这些按钮是在运行时创建的。如果我设置宽度button.setwidth(300),它将把宽度设置为300px。我想要宽度以dp为单位设置。有没有什么解决方法?


使用此链接:https://dev59.com/Hm435IYBdhLWcg3wuign - Anil Jadhav
看一下这个。我想那是你需要的东西。 - Mike T
3个回答

12

你需要使用TypedValue.applyDimension来获取dp的像素数量。这是一个示例:

DisplayMetrics dm = getResources().getDisplayMetrics();
float dpInPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DP, 300, dm);

这将以编程方式提供300dp的像素值。

干杯


1
它是COMPLEX_UNIT_DIP,一个小笔误。 - vishal dharankar

2

Android没有单独的方法来设置按钮在dp中的尺寸。您需要:

//Find screen density scale factor
final float scale = getContext().getResources().getDisplayMetrics().density;
myButton.setWidth((int)(100 * scale));
myButton.setHeight((int)(50 * scale));

1

没有setWidth(300dp)的方法。解决方法是获取显示大小,并相应地调整300px变量。

我必须说,可能有更好的方法来创建漂亮的布局。您尝试过使用嵌套的线性布局和layout_weights吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接