在Kotlin中编码时遇到问题。我复制粘贴了java code sample并将DP转换为Pixels,以便将其作为用于以编程方式设置填充的参数。我原以为IDE会自动将其全部转换为Kotlin,但是在此过程中失败了。
Java 中的代码如下:
float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);
翻译成科特林后:
val scale = resources.displayMetrics.density
val dpAsPixels = (sizeInDp * scale + 0.5f) as Int
演员表as Int
被标记为错误
“此强制转换永远不会成功”
如何解决?
答案 0 :(得分:2)
如果你在 dimens.xml 中有价值
<dimen name="textSize">24dp</dimen>
然后,您可以以像素为单位获取值作为 Int
val value = resources.getDimensionPixelSize(R.dimen.textSize)
答案 1 :(得分:1)
可以通过删除强制转换as Int
并将其替换为方法.toInt()
val scale = resources.displayMetrics.density
val dpAsPixels = (16.0f * scale + 0.5f).toInt()
答案 2 :(得分:1)
为什么不尝试使用扩展功能,例如
val Int.dp: Int get() = (this / getSystem().displayMetrics.density).toInt()
val Int.px: Int get() = (this * getSystem().displayMetrics.density).toInt()
希望它会有所帮助;)