簡體   English   中英

在 Kotlin 中將 Dp 轉換為 Px - 這種轉換永遠不會成功

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM