setmargin()可以使用多少种不同的单位类型?



我们知道设置页边距是一种方法

我从这个答案中发现了这个例子。设置dp单位类型的边距。

val param = xml.layoutParams as ViewGroup.MarginLayoutParams

param.setMargins(left, top, right, bottom)

xml.layoutParams = param

这个变量是从这个答案中发现的。它将像素转换为dp,允许您将其用于前面示例中所示的参数之一。

val pxToDP = if ( direction == "left" || direction == "right" ) {
px / ( xml.context.resources.displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)
} else if ( direction == "top" || direction == "bottom" ) {
px / ( xml.context.resources.displayMetrics.ydpi / DisplayMetrics.DENSITY_DEFAULT)
}

但是如果我想用一个表示英寸的变量来设置边距呢?我该怎么做呢?

还有其他的方法,我可以使用设置在Kotlin边距,其中变量代表不同的单位类型?如果有,方法是什么?

在Android中最常见的情况是设置任何尺寸:像素。setMargins也得到px值,而不是dps或任何其他(根据doc)。所以如果你有一些不同单位的数字那么你需要把它转换成像素

用于重新计算给定单元中的某个值,使用TypedValue类,例如:

int _10dpInPixelUnit = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10,
getResources().getDisplayMetrics());

如果你想使用英寸,只需使用TypedValue.COMPLEX_UNIT_IN(一些doc和其他单位在这里)

最新更新