【问题标题】:Change layout direction of a ComposableJetpack compose:更改 Composable 的布局方向
【发布时间】:2021-03-27 19:15:22
【问题描述】:
我想将特定可组合的方向设置为 RTL
@Composable
fun ViewToBeChanged() {
Row {
Image()
Column {
Text("Title")
Text("Subtitle")
}
}
}
有可能吗?
Jetpack 撰写 Layout documentation 提及 LocalLayoutDirection
通过更改LocalLayoutDirection compositionLocal 来更改可组合的布局方向。
但我不知道如何在可组合中使用它才能生效。
【问题讨论】:
标签:
android
android-jetpack-compose
【解决方案2】:
由于我没有你的图片,我将你的可组合调整为:
@Composable
fun ViewToBeChanged() {
Row {
Text("Foo", modifier = Modifier.padding(end = 8.dp))
Column {
Text("Title")
Text("Subtitle")
}
}
}
这给了我们:
切换到 RTL 的一种方法是使用 CompositionLocalProvider 和 LocalLayoutDirection:
@Composable
fun RtlView() {
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
Row {
Text("Foo", modifier = Modifier.padding(end = 8.dp))
Column {
Text("Title")
Text("Subtitle")
}
}
}
}
在这里,我们说我们将覆盖 CompositionLocal 以用于提供给 CompositionLocalProvider() 的尾随 lambda 内容的布局方向。这给了我们:
这改变了可组合树的这个分支使用的布局方向,用于可组合本身。英语仍然是 LTR 语言,因此文本不受影响。