我想将特定可组合的方向设置为 RTL
@Composable
fun ViewToBeChanged() {
Row {
Image()
Column {
Text("Title")
Text("Subtitle")
}
}
}
有可能吗?
Jetpack 撰写 Layout documentation 提及 LocalLayoutDirection
通过更改 LocalLayoutDirection
compositionLocal 来更改可组合的布局方向。
但是我不知道如何在可组合中使用它才能生效。
答案 0 :(得分:4)
因为我没有你的图片,所以我调整了你的可组合:
@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
的尾随 lambda 内容的布局方向的 CompositionLocalProvider()
。这给了我们:
这改变了可组合树的这个分支使用的布局方向,用于组合本身。英语仍然是LTR语言,所以文字不受影响。
答案 1 :(得分:3)
您可以使用 CompositionLocalProvider
提供自定义 LocalLayoutDirection
。
类似于:
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl ) {
Column(Modifier.fillMaxWidth()) {
Text("Title")
Text("Subtitle")
}
}