通过标识符Kotlin获取可绘制资源

ssgvzors  于 2022-11-25  发布在  Kotlin
关注(0)|答案(2)|浏览(128)

大家好,我是android studio noob,我正在尝试通过提供如下标识符来从可绘制资源中获取图像:

“瓦尔s”是动态变量,因此在for的每个循环中都是不同的。
它工作的很好,但是代码似乎过时了。你有什么想法,我怎么才能做到同样的功能,而不过时?我还想把这个图像设置成一个动态按钮。
非常感谢

efzxgjgh

efzxgjgh1#

您可以使用此方法。

val s = "ico_btn_menu_terminal"
    val d = resources.getDrawable(this.resources.getIdentifier(s, "drawable", this.packageName), null)
    button_dynamic.background = d

所以您可以使用getDrawable(id, theme)而不是getDrawable(id)方法,您可以使用.background而不是setBackgroundDrawable方法

q0qdq0h2

q0qdq0h22#

我知道这是晚了,但只是以防万一有人想完成同样的JetPack合成,这是你怎么做。

val s = "ico_btn_menu_terminal"
val context = LocalContext.current
val d by remember(s) {
        derivedStateOf {
            context.resources.getIdentifier(s, "drawable", context.packageName)
        }
    }
Image(
        painter = painterResource(id = d),
        contentDescription = "image"
    )

您可能会决定移除derivedStateOf,这取决于您的使用案例。

相关问题