![](/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.