小编R0c*_*0ck的帖子

BottomNavigationItems 填充

有什么方法可以从 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)

android-bottomnav android-jetpack-compose

7
推荐指数
2
解决办法
2029
查看次数

浏览 Jetpack Compose 时如何清除后台堆栈?

我正在应用程序中实现注销操作。我希望当用户单击“注销”时,转到“登录”。当用户采取以下路径:登录 -> 主页 -> 设置(单击注销) -> 登录时,当我按回键时,应用程序将转到后台并关闭,这是我想要的行为。

但是,当用户采用以下路线时:登录 -> 主页 -> 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)

android-jetpack-navigation android-jetpack-compose

4
推荐指数
1
解决办法
3571
查看次数