![](/img/trans.png)
[英]Error while explicitly casting Android's RecyclerView's ViewHolder in Kotlin: 'This cast can never succeed'
[英]Convert Dp to Px in Kotlin - This cast can never succeed
我在使用 Kotlin 编码时遇到了问题。 我复制粘贴了一个将 DP 转换为像素的Java 代码示例,以便将其作为以编程方式设置填充的参数。 我期待 IDE 自动将其全部转换为 Kotlin,但在这个过程中它失败了。
Java中的代码如下所示:
float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);
翻译成Kotlin后:
val scale = resources.displayMetrics.density
val dpAsPixels = (sizeInDp * scale + 0.5f) as Int
转换as Int
标记有错误
“这个演员永远不会成功”
这怎么能解决?
为什么不尝试使用扩展功能,例如
val Int.dp: Int get() = (this / getSystem().displayMetrics.density).toInt()
转换为 DP 和
val Int.px: Int get() = (this * getSystem().displayMetrics.density).toInt()
转换为像素?
希望能帮助到你 :)
可以通过将.toInt()
删除as Int
并用.toInt()
方法替换它来解决该错误
val scale = resources.displayMetrics.density
val dpAsPixels = (16.0f * scale + 0.5f).toInt()
如果你在 dimens.xml 中有价值
<dimen name="textSize">24dp</dimen>
然后,您可以将像素值作为 Int
val value = resources.getDimensionPixelSize(R.dimen.textSize)
扩展.kt 文件
val Int.dp: Int
get() = (toFloat() * Resources.getSystem().displayMetrics.density + 0.5f).toInt()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.