【发布时间】:2012-06-16 03:06:14
【问题描述】:
我有一个安卓应用程序。其中有很多按钮,但这些按钮是在运行时创建的。如果我设置宽度button.setwidth(300) 它会将宽度设置为 300px。我希望在 dp 中设置宽度。有什么办法吗?
【问题讨论】:
-
看看[这个][1]。我想这就是你想要的。 [1]:stackoverflow.com/questions/5255184/…
我有一个安卓应用程序。其中有很多按钮,但这些按钮是在运行时创建的。如果我设置宽度button.setwidth(300) 它会将宽度设置为 300px。我希望在 dp 中设置宽度。有什么办法吗?
【问题讨论】:
Android 没有在 dp 中设置按钮尺寸的单独方法。你必须:
//Find screen density scale factor
final float scale = getContext().getResources().getDisplayMetrics().density;
myButton.setWidth((int)(100 * scale));
myButton.setHeight((int)(50 * scale));
【讨论】:
没有 setWidth(300dp)。解决方法是获取显示尺寸,并相应地调整 300px 变量。
我必须说,可能有更好的方法来创建漂亮的布局。您是否尝试过使用嵌套的线性布局和 layout_weights?
【讨论】:
您必须使用TypedValue.applyDimension 来获取 dp 的像素数。这是一个例子:
DisplayMetrics dm = getResources().getDisplayMetrics();
float dpInPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DP, 300, dm);
这将以编程方式给出 300dp 的像素值。
干杯
【讨论】: