设置布局参数的dip值。

4

我想使用 setLayoutParams 方法来指定表格布局的图形参数,但我不确定该方法接受像素值还是dip值,特别是在Java中存储的值似乎是像素值。例如,如果我声明这两个变量:

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

接着调用该方法:

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

它们被视为像素吗,还是一旦传递给方法就转换了?如果不是,请问我如何在Java中设置dip值?


方法 setLayoutParams 接受像素值。 - Volodymyr Yatsykiv
谢谢Volodymyr Yatsykiv,但是如果我想在Java中以dip定义值,我是否必须将它们转换为传递给setLayoutParams方法? - akari
是的,如果您在dp中有值,则必须将其转换为px(请参见下面的答案),然后将其放入setLayoutParams方法。 - Volodymyr Yatsykiv
2个回答

7

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

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

0

如果你想要以dip为单位的值,你需要将其乘以屏幕的密度。 你可以通过以下方式获取:

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

好的,谢谢。你的意思是我应该这样做:int blockDimensionDipValue = blockDimension * density 吗? - akari
是的,但将 blockDimension 转换为 float 类型,然后将结果转换为 int 类型。 - Blackbelt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接