一个LayoutParams构造函数重载,其大小为dip。为什么不?

时间:2015-06-29 17:19:53

标签: android layoutparams

在Android SDK中,ViewGroup(和子类)的构造函数没有重载,可以在DP(或DIP)中指定宽度和高度,而不是像素。为什么? 实际上我们有:

ViewGroup.LayoutParams(int width, int height)

有一个好主意:

ViewGroup.LayoutParams(int dpWidth, int dpHeight, int ComplexUnitType.Dip) 

其中ComplexUnitType可以是带有度量单位的枚举(例如)

1 个答案:

答案 0 :(得分:-1)

您可以使用TypedValue类中使用的方法complexToDimensionPixelSize,此方法接受要转换为像素的值和当前设备指标,因此可能的实现可能是这样的:

int width = 300; // value to be converted
DisplayMetrics metrics = getResources().getDisplayMetrics();
int widthInPx = TypedValue.complexToDimensionPixelSize(width, metrics);