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 的一种方法是使用CompositionLocalProviderLocalLayoutDirection

@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 语言,因此文本不受影响。


以上是Jetpackcompose:更改可组合的布局方向的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>