我有个问题
问题是,我不知道如何隐藏底部的应用程序栏时,我导航到一个“添加问题”屏幕。
我需要你的帮助。
这是MyScreen,底部是应用程序栏
@Composable
fun Navigation() {
val navController = rememberNavController()
val items = listOf(Screen.Home, Screen.Search, Screen.Notifications, Screen.Profil)
Scaffold(
bottomBar = {
bottomAppNavigation(navController = navController, items)
}
) {
Box(modifier = Modifier.padding(it)) {
ScreenController(navController = navController)
}
}
}
这是我的控制器与navHost
@ExperimentalComposeUiApi
@Composable
fun ScreenController(navController: NavHostController) {
NavHost(navController = navController, startDestination = Screen.Home.route) {
composable(Screen.Home.route) {
HomeScreen(navController)
}
composable(Screen.Search.route) {
SearchScreen(navController, it)
}
composable(Screen.Notifications.route) {
}
composable(Screen.Profil.route) {
user_profil()
}
composable("Ask_question") {
AskScreen(navController)
}
}
}
我认为问题是因为这就像活动和片段,我有一个盒子,可组合的屏幕放在那里,我所有的页面都在他里面。
3条答案
按热度按时间apeeds0o1#
我建议你使用
AnimatedVisibility
的BottomNavigation
部件,我认为这是最清晰的方式组成.1.您应该使用
remeberSaveable
来存储BottomBar的状态:1.在可组合函数中,我们使用
when
来控制BottomBar的状态,下面我们将bottomBarState
设置为true
,如果我们想显示BottomBar,否则我们将bottomBarState
设置为false
:1.将
BottomNavigation
放入AnimatedVisibility
中,从bottomBarState
设置visible
值,并设置enter
和exit
动画,在我的例子中,我使用slideInVertically
为enter
动画,slideOutVertically
为exit
动画:MainActivity的完整代码:
结果:
不要忘记使用
@ExperimentalAnimationApi
注解来编写函数。**更新:**Compose 1.1.0及以上版本
@ExperimentalAnimationApi
不需要。**22.02.2022更新:**我做了一些研究,并更新了第2点。现在我们使用
when
来控制bottomBarState
。完整代码在gitHub上提供:https://github.com/AndreiRoze/BottomBarAnimation
官方文档中提供的动画示例:https://developer.android.com/jetpack/compose/animation/composables-modifiers
toe950272#
如果你想隐藏
BottomBar
,就不要输出它。类似于:
其中
currentRoute
是(至少使用Navigation Compose 2.4.0-alpha 01):jmo0nnb33#