更改可组合项的布局方向

Change layout direction of a Composable

我想将特定可组合项的方向设置为 RTL


@Composable
fun ViewToBeChanged() {
  Row {
     Image()
     Column {
        Text("Title")
        Text("Subtitle")
    }
  }
}

可能吗?

Jetpack compose Layout documentation 提及 LocalLayoutDirection

Change the layout direction of a composable by changing the LocalLayoutDirection compositionLocal.

但我不知道如何在可组合项中使用它才能生效。

由于我没有你的图片,我将你的可组合项调整为:

@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")
      }
    }
  }
}

在这里,我们说我们正在为提供给 CompositionLocalProvider() 的尾随 lambda 的内容覆盖 CompositionLocal 的布局方向。这给了我们:

这会更改可组合树的此分支使用的布局方向,用于可组合项本身。英语仍然是 LTR 语言,因此文本不受影响。

您可以使用 CompositionLocalProvider to provide a custom LocalLayoutDirection.

类似于:

CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl ) {
    Column(Modifier.fillMaxWidth()) {
        Text("Title")
        Text("Subtitle")
    }
}