如何以编程方式(而非像素)以编程方式设置Android EditText视图的宽度

Jef*_*ffR 6 android

我正在基于指定数量的行和列在代码中动态生成EditText视图的网格.我希望每个EditText视图具有相同的宽度(例如,100dp).

虽然我可以使用setWidth或通过创建LayoutParam对象来设置视图的大小,但我似乎只能指定像素值.我想要使​​用DP(密度无关)单元,类似于我使用XML布局所做的.

如何在代码中完成?

Spi*_*ams 11

我在Utils类中有一个方法来执行此转换:

public static int dip(Context context, int pixels) {
   float scale = context.getResources().getDisplayMetrics().density;
   return (int) (pixels * scale + 0.5f);
}
Run Code Online (Sandbox Code Playgroud)


JRL*_*JRL 5

float value = 12;
int unit = TypedValue.COMPLEX_UNIT_DIP;
DisplayMetrics metrics = getResources().getDisplayMetrics();
float dipPixel = TypedValue.applyDimension(unit, value, metrics);
Run Code Online (Sandbox Code Playgroud)