Jetpackcompose:更改可组合的布局方向
我想将特定可组合的方向设置为RTL
@Composable
fun ViewToBeChanged() {
Row {
Image()
Column {
Text("Title")
Text("Subtitle")
}
}
}
是否可以?
Jetpack compose Layout 文档提到LocalLayoutDirection
通过更改
LocalLayoutDirectioncompositionLocal来更改可组合的布局方向。
但是我不知道如何在可组合中使用它才能生效。
回答
您可以使用CompositionLocalProvider来提供自定义LocalLayoutDirection.
就像是:
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl ) {
Column(Modifier.fillMaxWidth()) {
Text("Title")
Text("Subtitle")
}
}
回答
由于我没有您的图像,因此我将您的可组合调整为:
@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 内容的for 布局方向CompositionLocalProvider()。这给了我们:
这将更改可组合树的此分支使用的布局方向,用于可组合本身。英语仍然是 LTR 语言,因此文本不受影响。