setLayoutParams dip值

时间:2013-07-01 15:28:02

标签: android android-layout pixel density-independent-pixel

我正在尝试使用方法setLayoutParams来指定我的表格布局的图形参数,但我不确定方法setLayoutParams是否采用像素值或倾角值,尤其是在java中存储的值似乎是像素,例如,如果我声明这两个变量:

private int blockDimension = 50; 
private int blockPadding = 2; 

然后调用方法:

tableRow.setLayoutParams(new LayoutParams( (blockDimension + 2 * blockPadding) * numberOfColumnsInMineField,blockDimension + 2 * blockPadding) );

它们被视为像素还是一旦传递给方法就被转换?那么如果不是,我怎样才能在java中设置dip值?

2 个答案:

答案 0 :(得分:7)

需要像素。要将dp转换为像素,您可以使用:

public int getPx(int dimensionDp) {
    float density = getResources().getDisplayMetrics().density;
    return (int) (dimensionDp * density + 0.5f);
}

答案 1 :(得分:0)

如果您希望在dip中使用该值,则必须将其乘以屏幕密度 你可以这样得到它:

float density = getResources().getDisplayMetrics().density