簡體   English   中英

在 JetPack Compose 中手動重構所有 AndroidView

[英]Manually recompose all AndroidView in JetPack Compose

在我的項目中,我使用 JetPack Compose 和 AndroidView 來使用 XML 視圖。

@Composable
fun MyComposable(
    message: String
) {

    AndroidView(
        factory = { context ->

            TextView(context).apply {
                text = message
            }

        })
}

我的問題是,當我的message state 更改時, AndroidView中的 XML 視圖不會重新組合。 AndroidView中有一個選項可以阻止 state 更改?

ps:我已經為示例簡化了MyComposable

您可以使用update塊。

文檔

由於重組, update塊可以多次運行(也可以在 UI 線程上),它是根據 state 設置View屬性的正確位置。 當 state 更改時,將重新執行該塊以設置新屬性 請注意,該塊也將在factory塊完成后立即運行一次

AndroidView(
    factory = { context ->

        TextView(context).apply {
            text = "Initial Value"
        }
    },
    update = {
        it.text =  message
    }
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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