使用带有dip单位而不是px单位的setPadding给出填充

时间:2011-10-17 12:01:12

标签: android layout padding

方法

public void setPadding (int left, int top, int right, int bottom)

someview.setPadding(1,1,1,1);

这将使每边填充1px。我怎么能给1dip而不是1px?

左,右上和下的值以像素为单位,如何在代码中以编程方式给出值?

由于

3 个答案:

答案 0 :(得分:20)

使用以下代码从dp中获取给定值的像素。

Resources res = getResources();
float value = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, valueInDP, res.getDisplayMetrics());

其中valueInDP是dp中的值,这将根据屏幕密度返回相应的像素值。

或者你可以使用以下 -

float value = valueInDP * getResources().getDisplayMetrics().density;

答案 1 :(得分:2)

What is the difference between "px", "dp", "dip" and "sp" on Android?

float scale = context.getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (your_dp_goes_here * scale + 0.5f);

view.setPadding(dpAsPixels , dpAsPixels , dpAsPixels , dpAsPixels );
view.setPaddingRelative(dpAsPixels , dpAsPixels , dpAsPixels , dpAsPixels );

答案 2 :(得分:0)

getListView().setPadding(50,50,50,50);