【问题标题】: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


    【解决方案1】:

    您可以使用CompositionLocalProvider 提供自定义LocalLayoutDirection

    类似:

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

    【讨论】:

      【解决方案2】:

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

      @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 以用于提供给 CompositionLocalProvider() 的尾随 lambda 内容的布局方向。这给了我们:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-21
        • 2022-09-25
        • 2023-01-05
        • 1970-01-01
        • 1970-01-01
        • 2021-07-22
        • 2021-02-19
        相关资源
        最近更新 更多