我们知道设置页边距是一种方法
我从这个答案中发现了这个例子。设置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和其他单位在这里)