使用 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 单位的主要内容,如果未能解决你的问题,请参考以下文章
setPadding()在动态创建CardView时不起作用