android - 使用伴奏导航动画时如何在 Jetpack Compose 中隐藏底栏

标签 android android-jetpack-compose jetpack-compose-accompanist

情况
我正在使用 Kotlin 编写一个非常简单的应用程序& Android Jetpack Compose我有一个 scaffold包含我的navHostbottomBar .
我可以使用 bottomBar在三个主屏幕之间导航。
其中一个主屏幕有一个详细屏幕,它不应该显示 bottomBar .

我的代码
到目前为止,这是小菜一碟:

// MainActivitys onCreate

setContent {
    val navController = rememberAnimatedNavController()
    val navBackStackEntry by navController.currentBackStackEntryAsState()
    val currentRoute = navBackStackEntry?.destination?.route?.substringBeforeLast("/")

    BottomBarNavTestTheme {
        Scaffold(
            bottomBar = {
                if (currentRoute?.substringBeforeLast("/") == Screen.Detail.route) {
                    MyBottomNavigation(
                        navController,
                        currentRoute,
                        listOf(Screen.Dashboard, Screen.Map, Screen.Events) // main screens
                    )
                }
            }
        ) { innerPadding ->
            NavHost( // to be replaced by AnimatedNavHost
                navController = navController,
                startDestination = Screen.Dashboard.route,
                modifier = Modifier.padding(innerPadding)
            ) {
                composable(Screen.Dashboard.route) { DashboardScreen() }
                composable(Screen.Map.route) { MapScreen { navController.navigate(Screen.Detail.route) } }
                composable(Screen.Events.route) { EventsScreen() }
                composable(Screen.Detail.route) { MapDetailScreen() }
            }
        }
    }
}

问题 :
我想在我的屏幕之间进行转换,所以我使用 Accompanists Navigation Animation :
只需更换 NavHostAnimatedNavHost .
mainScreen 导航时至detailScreen有一个奇怪的效果:
  • bottomBar 隐藏
  • 主屏幕调整大小:(见底部对齐文本)
  • 细节屏幕的动画发生。

  • 这看起来很糟糕,我该如何解决?


    解决方案
    最佳解决方案如下所示:
  • 主屏幕保持底部栏和淡出。
  • 同时详细页面进入没有底栏。
  • 最佳答案

    因此,我们采用了一种解决方法:

  • 在顶层 scaffold现在不包含 bottomBar没有了
  • 每个需要它的屏幕现在都有自己的bottomBar .

  • 这工作正常,只是 bottomBar 的波纹点击没有我们想要的那么流畅(我们在点击中交换它,所以这是意料之中的)
    这也解决了一个问题,即屏幕具有可滚动内容,由于隐藏底栏时滚动距离发生了变化,因此滚动距离有点困惑。

    关于android - 使用伴奏导航动画时如何在 Jetpack Compose 中隐藏底栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68895484/

    相关文章:

    android - 失败 [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION : Failed to parse/data/app/vmdl1686600827. tmp/base.apk:损坏的 XML 二进制文件]

    android - 小部件中的权限拒绝

    Android 按钮可绘制不显示

    android - jetpack accompanist 中的 launchPermissionRequest() 不执行任何操作

    android-jetpack-compose - 当内容伴奏 webview 时,Jetpack Compose TabRow 闪烁

    android - 另一个 LazyColum 中带有 LazyColum 的 Horizo​​ntalPager - Jetpack Compose

    c# - Kindle Fire 视频流式传输崩溃

    android - 在 Jetpack Compose 中调用分页数据的刷新方法无法正常工作

    kotlin - 网络调用后,如何将数据从 Android 库传递到我的应用程序?

    android - Jetpack Compose Path 将在 Canvas 边界之外绘制