使用 setPadding 提供填充,使用 dip 单位而不是 px 单位

Posted

技术标签:

【中文标题】使用 setPadding 提供填充,使用 dip 单位而不是 px 单位【英文标题】:Give padding with setPadding with dip unit not px unit 【发布时间】:2011-12-09 06:08:51 【问题描述】:

方法

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

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

这将在每边提供 1px 的填充。我怎样才能给 1dip 而不是 1px ?

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

谢谢

【问题讨论】:

【参考方案1】:

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

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

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

或者你可以使用以下 -

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

【讨论】:

反过来会怎么样?从dip到px,有什么地方可以找到更多细节 是的。检查这些链接***.com/questions/2406449/… 和***.com/questions/2238883/…。 那个值是浮点数,而setPadding方法需要整数参数。【参考方案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 );

【讨论】:

【参考方案3】:
getListView().setPadding(50,50,50,50);

【讨论】:

以上是关于使用 setPadding 提供填充,使用 dip 单位而不是 px 单位的主要内容,如果未能解决你的问题,请参考以下文章

Android中dp和px之间进行转换

setPadding()在动态创建CardView时不起作用

删除 JavaFX 按钮填充?

Android填充问题

Android - 开发页面需了解的dip,sp,px知识,以及它们之间的转换

Android 视图 setPadding() 与 setPaddingRelative()