有沒有辦法在Jetpack Compose中使用依賴主題的字串和drawables?在基于xml的布局中,可以使用屬性和主題來完成。
uj5u.com熱心網友回復:
你需要對它們進行國際化嗎?你可以在你的主題物件中創建參考。
或者制作一個自定義的字串類,當你創建主題的時候,你可以加載它。
主題的功能比較多,所以應該不難做到。
uj5u.com熱心網友回復:
你可以創建你自己的本地變數,像這樣:
data class AppResources(
val someDrawable: Int,
val someString: Int。
)
val LocalAppResources = staticCompositionLocalOf<AppResources> {
error("CompositionLocal LocalAppResources not present")
}
在你的主題中提供需要的值:
val LightAppResources = AppResources(
someDrawable = R.drawable.drawable_light,
someString = R.string.text_light
)
val DarkAppResources = AppResources(
someDrawable = R.drawable.drawable_dark,
someString = R.string.text_dark
)
fun AppTheme(
darkTheme。Boolean = isSystemInDarkTheme()。
內容。 () -> Unitval colors = if ( darkTheme) {
黑暗主題顏色(DarkThemeColors
} else {
淺色主題顏色
}
val appResources = if (darkTheme) {
黑暗應用資源
} else {
輕度應用資源
}
MaterialTheme(
顏色 = 顏色。
typography = typography,
形狀 = 形狀。
) {
CompositionLocalProvider(
LocalAppResources提供appResources。
內容 = 內容
)
}
}
然后你就可以在你的應用程式中這樣使用它了:
Image(
painterResource(id = LocalAppResources.current.someDrawable)。
"..."/span>
)
文本(
stringResource(id = LocalAppResources.current.someString)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/321611.html
標籤:
上一篇:如何每天更換背景?
下一篇:更新一個陣列中的計數值
