Problem

在某些文档中,Composable androidx.compose.material.NavigationRail具有可选的"居中"对齐方式.我无法用Jetpack Compose实现这一点.

"旧"XML属性是app:menuGravity="center" according to this tutorial.

Things I tried without success

我试图将NavigationRail(实际小部件的简单包装)放入一个带有对齐设置的框中:

Box(contentAlignment = Alignment.Center) {
    NavigationRail(
        selectedItem = selectedItem,
        onSelectItem = { selectedItem = it }
    )
}

并将其直接放入原始组合中:

NavigationRail(
    modifier = modifier.width(80.dp),
    backgroundColor = MaterialTheme.colors.surface
) {
   Box(contentAlignment = Alignment.Center) {
       for (item in NavigationItem.values()) {
      NavigationRailItem(
          selected = selectedItem == item,
          onClick = { onSelectItem.invoke(item) },
          icon = { Icon(item.icon, item.title) },
          alwaysShowLabel = true,
          selectedContentColor = MaterialTheme.colors.primaryVariant,
          unselectedContentColor = MaterialTheme.colors.primary,
          label = { Text(item.title, modifier = Modifier.padding(top = 8.dp)) }
      )
       }
   }
}

Screenhot

enter image description here

推荐答案

正如example中建议的那样,要将navigationRail的内容置于中心位置,可以使用以下内容:

NavigationRail {
    Spacer(Modifier.weight(1f))
    items.forEachIndexed { index, item ->
        NavigationRailItem(
            //....
        )
    }
    Spacer(Modifier.weight(1f))
}

要实现底部对齐,只需使用Spacer:

NavigationRail {
    Spacer(Modifier.weight(1f))
    items.forEachIndexed { index, item ->
        NavigationRailItem(
            //....
        )
    }
}

enter image description here

Android相关问答推荐

如何将Hilt添加到Android Studio中的Kotlin项目中?

我遇到了一个HashMaps对象没有存储在Firebase数据库中的问题.HashMap的一个对象put方法未被存储

无法将非静态方法与Frida挂钩

如何在android库中关联应用程序链接?

Jetpack Compose X.dp 性能问题?

在 Bash 脚本中使用 XMLLINT 解析 XML 单元测试文件,并将其放入数组中以表示成功和失败

如何在 compose 中使用可变对象?

在java android studio项目上安装mapbox

如何在另一个函数中初始化主类参数? (我是初学者)代码推荐

更改当前活动并返回后,Android webview 滚动不起作用

任务 ':app:kaptGenerateStubsDebugKotlin' 执行失败

发布 MAUI 应用程序时出现遇到重复程序集错误

通过 adb 解压并重新安装后 Android 应用程序崩溃

Jetpack 组合千位分隔符视觉转换,也适用于小数

android xml底部空间大

记住或不记得derivedStateOf

在android studio中使用wifi配对设备的问题

Android:为什么 ICICI iMobile Pay 应用程序在我的应用程序中显示root/jailbroken设备?

协程是否在 if 条件下保持秩序?

如何根据加载图像的 colored颜色 绘制边框?