在JetPack Compose中手动重构所有AndroidView

Ady*_*Ady 8 android view android-jetpack android-jetpack-compose

在我的项目中,我使用 JetPack Compose 和 AndroidView 来使用 XML 视图。

@Composable
fun MyComposable(
    message: String
) {

    AndroidView(
        factory = { context ->

            TextView(context).apply {
                text = message
            }

        })
}

Run Code Online (Sandbox Code Playgroud)

我的问题是,当我的message状态发生变化时,中的 XML 视图AndroidView不会重新组合。有一个选项可以AndroidView观察状态变化吗?

ps:我已经简化了MyComposable这个例子

Gab*_*tti 17

您可以使用该update块。

来自文档

update由于重组,该块可以运行多次(也可以在 UI 线程上),并且它是View根据状态设置属性的正确位置。当状态改变时,该块将被重新执行以设置新的属性factory请注意,该块也将在块完成后立即运行一次

AndroidView(
    factory = { context ->

        TextView(context).apply {
            text = "Initial Value"
        }
    },
    update = {
        it.text =  message
    }
)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,它运行完美!祝你今天过得愉快 ! (2认同)