如何在程序中将布局和文本大小设置为DP?

2022-09-01 03:23:47

基本上,我在XML中具有此功能,但是我必须在代码中重新创建它。我该怎么做?

<EditText 
        android:layout_width="140dp"
        android:layout_height="20dp"
        android:background="@drawable/input_bg01"
        android:textSize="10dp"
        android:gravity="center"
        android:text="111-222-333     FOOO" />

我可以用它来设置文本大小,但是layout_width和高度呢?

edTxt.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10);

有没有办法告诉代码使用DP单位而不是像素?还是将DP转换为像素的转换函数?


答案 1

您可以使用:

float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics());

现在,的值等效于设备的当前屏幕密度。pixels10dp

TypedValue 包含有助于转换的其他类似方法。


答案 2

在这里解决了。

提取:

DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = metrics.density * dp;
int pixels = (int) (fpixels + 0.5f);