kotlin - 无法在底部导航中垂直居中对齐项目
问题描述
我正在尝试在 Compose 的底部导航中垂直对齐中心的项目。我没有为修改器提供任何高度。出于某种原因,项目和图标抵制垂直居中对齐。这是我所拥有的,然后遵循我的代码:
@Composable
fun BottomBarUi(backStackEntry: State<NavBackStackEntry?>, onNavigate: (String) -> Unit) {
BottomNavigation(modifier = Modifier){
val currDest = backStackEntry.value?.destination
for (screen in LocalInfo.current.bottomBarItems){
BottomNavigationItem(
selected = currDest?.hierarchy?.any{it.route == screen.route} == true,
onClick = {
onNavigate(screen.route)
},
icon = { Icon(painterResource(screen.iconId), contentDescription = screen.route, modifier = Modifier.align(Alignment.CenterVertically))},
label = { Utils.getRouteLabel(screen.route)},
modifier = Modifier
.padding(1.dp)
.align(Alignment.CenterVertically)
.weight(1f)
)
}
}
}
@Preview
@Composable
fun PreviewBottomBarUi() {
BottomBarUi(backStackEntry = rememberNavController().currentBackStackEntryAsState(), onNavigate = {})
}
解决方案
如果您的图标有填充并且您不想删除它们,您可以通过设置offset
修饰符来偏移底部导航中的所有图标。同时删除你的align
修饰符:
BottomNavigationItem(
selected = currDest?.hierarchy?.any{it.route == screen.route} == true,
onClick = {
onNavigate(screen.route)
},
icon = { Icon(painterResource(screen.iconId), contentDescription = screen.route, modifier = Modifier.align(Alignment.CenterVertically))},
label = { Utils.getRouteLabel(screen.route)},
modifier = Modifier
.padding(1.dp)
.offset(y = 10.dp)
.weight(1f)
)
另一件事:不清楚为什么要设置标签属性,因为上面显示的图像不显示图像。
推荐阅读
- multithreading - Requests-html 中的线程/异步
- angular-components - 单击Angular-6中的其他下拉输入字段时下拉列表未关闭
- sbt-plugin - 如何在所有项目中收集 SettingKey 的所有值以用于 sbt 插件?
- linux - perl Term::ANSIColor 在 Raspberry Pi 控制台上不起作用
- html - 对齐父 div 中包含的左右元素
- java - 链表算法
- kivy - Qpython - Kivy 应用程序失败“没有名为 kivy 的模块”
- c# - 无法与最新版本的 Selenium 3.12 的 Chrome 浏览器(版本 67.0.3396.87)中的 WebElements 交互
- java - 条件为假时再次启动for循环 java
- mysql - 在 Codeigniter 中加入 4 个具有公共字段的表