Jetpack Compose - 柱 - 重心

mac*_*229 31 android kotlin android-jetpack android-jetpack-compose

我正在使用 Jetpack Compose 创建一个布局,并且有一列。我想要此列中的中心项目:

 Column(modifier = ExpandedWidth) {
        Text(text = item.title)
        Text(text = item.description)
 }
Run Code Online (Sandbox Code Playgroud)

Bin*_*aby 87

您可以使用

Text(
  text = item.title,
  textAlign = TextAlign.Center,
  modifier = Modifier.align(alignment = Alignment.CenterHorizontally)
)
Run Code Online (Sandbox Code Playgroud)
  • textAlign 用于对齐框内的文本。
  • Modifier.align() 用于对齐列内的文本框

  • `Modifier.align` 仅适用于 `BoxScope` (23认同)

Gab*_*tti 71

有了1.0.x 您可以使用这些参数

就像是:

Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
) {
        Text(
                text = "First item",
                modifier = Modifier.padding(16.dp)
        )
        Text(
                text = "Second item",
                modifier = Modifier.padding(16.dp)
        )
        Text(
                text = "Third item",
                modifier = Modifier.padding(16.dp)
        )
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果您只想水平居中,请使用:

Column(
        modifier = Modifier.fillMaxWidth(),
        horizontalAlignment = Alignment.CenterHorizontally
) {
    Column (  ) { ... }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 我在“align”上遇到错误,但我将 jetpack compose 依赖项更新为“1.0.0-alpha03”并且它有效。以前是`1.0.0-alpha02`谢谢! (2认同)

Sye*_*him 18

列视图的对齐方式

您可以通过查看列内对齐视图的所有可能性的图来找到附件中的详细信息。希望对您有帮助!


小智 12

用这个

   Column(
        horizontalAlignment = Alignment.CenterHorizontally,
        verticalArrangement = Arrangement.Center
    )
Run Code Online (Sandbox Code Playgroud)


小智 10

Text(
 "Hello World", 
 textAlign = TextAlign.Center,
 modifier = Modifier.width(150.dp)
)
Run Code Online (Sandbox Code Playgroud)

您可以使用TextAlign属性将文本居中。

参考 - https://developer.android.com/jetpack/compose/text


Ami*_*ian 10

或者,您可以创建自己的可组合项并在任何地方使用它:

@Composable
fun Center( modifier: Modifier = Modifier, content: @Composable ColumnScope.() -> Unit) {
    Column(
        modifier = modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally,
        content = content
    )
}
Run Code Online (Sandbox Code Playgroud)

你这样使用:

Center {
    Text(text = "Text 1")
    Text(text = "Text 2")
}
Run Code Online (Sandbox Code Playgroud)


rui*_*f3r 6

我不太喜欢它,但这就是它对我的作用:

Column(modifier = Modifier.fillMaxSize(),
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center) {
                //Your composable elements
            }
Run Code Online (Sandbox Code Playgroud)

编写1.0.0-beta07

  • `Modifier.fillMaxSize()` 而不是 `Modifier.fillMaxWidth().fillMaxHeight()` (2认同)

Jim*_*era 5

您还可以使用可组合的textAlign属性Text

Text(
    modifier = Modifier.fillMaxWidth(),
    text = item.title,
    textAlign = TextAlign.Center
)
Text(
    modifier = Modifier.fillMaxWidth(),
    text = item.description,
    textAlign = TextAlign.Center
)
Run Code Online (Sandbox Code Playgroud)