有什么方法可以从 BottomNavigationItem 中删除此填充吗?
如果我有非常大的文本,我必须使用 ResponsiveText 来管理它,但这不是我的意图。我需要的是它的左侧和右侧都没有侧边距/边距,以便占据尽可能多的空间。
我的代码:
@Composable
fun BottomNavBar(
backStackEntryState: State<NavBackStackEntry?>,
navController: NavController,
bottomNavItems: List<NavigationItem>
) {
BottomNavigation(
backgroundColor = DarkGray.copy(alpha = 0.6f),
elevation = Dimen0,
modifier = Modifier
.padding(Dimen10, Dimen20, Dimen10, Dimen20)
.clip(RoundedCornerShape(Dimen13, Dimen13, Dimen13, Dimen13))
) {
bottomNavItems.forEach { item ->
val isSelected = item.route == backStackEntryState.value?.destination?.route
BottomNavigationItem(
icon = {
Icon(
painter = painterResource(id = item.icon.orZero()),
contentDescription = stringResource(id = item.title)
)
},
label = {
ResponsiveText(
text = stringResource(id = item.title),
textStyle = TextStyle14, …Run Code Online (Sandbox Code Playgroud) 我正在应用程序中实现注销操作。我希望当用户单击“注销”时,转到“登录”。当用户采取以下路径:登录 -> 主页 -> 设置(单击注销) -> 登录时,当我按回键时,应用程序将转到后台并关闭,这是我想要的行为。
但是,当用户采用以下路线时:登录 -> 主页 -> ScreenOne -> ScreenTwo -> 主页 -> ScreenOne -> 设置(单击“注销”)-> 登录,当您按返回时,它会返回到“设置”并如果您再次按下它,它将转到 ScreenOne 等。
这就是当我单击“注销”时导航到“登录”的方式:
navController.navigate(NavigationItem.Login.route) {
popUpTo(NavigationItem.Login.route) {
inclusive = true
}
}
Run Code Online (Sandbox Code Playgroud)
注意:已经尝试将 Navigation.Home.route 作为 popUpTo 的参数。
我不知道是否相关,但这就是我在 Home -> ScreenOne -> ScreenTwo -> Home -> ScreenOne 之间进行导航的方式:
navController.navigate(item.route) {
navController.graph.startDestinationRoute?.let { route ->
popUpTo(route = route) {
saveState = true
}
}
launchSingleTop = true
restoreState = true
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何清除后堆栈或保证在第二种行为中,当我在注销后进入登录屏幕并按“返回”时,应用程序将进入第二个计划?
编辑:添加了 NavHost 结构。
@Composable
@ExperimentalFoundationApi
@ExperimentalComposeUiApi …Run Code Online (Sandbox Code Playgroud)