首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用导航组件设置BottomNavView后,Jetpack Compose TopAppBar闪烁

问使用导航组件设置BottomNavView后,Jetpack Compose TopAppBar闪烁
EN

Stack Overflow用户
提问于 2021-03-15 20:45:39
回答 2查看 428关注 0票数 2

在一个带有BottomNavigationView和导航组件的Jetpack Compose应用程序中,我对activity中的底部栏进行了通常的设置:

代码语言:javascript
复制
val navHostFragment =
        supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
navigationView.setupWithNavController(navController)

在每个屏幕中,我都使用了一个可组合的TopAppBar。不幸的是,在添加setupWithNavController调用后,TopAppBar开始在所有导航栏目标中闪烁(但不是在更深的目标中)。

如何修复闪烁?

EN

回答 2

Stack Overflow用户

发布于 2021-08-21 13:27:43

我也有同样的问题。让我惊讶的是,将androidx.navigation:navigation-compose version降级到2.4.0-alpha04是有帮助的。

票数 2
EN

Stack Overflow用户

发布于 2021-03-26 08:58:39

我无法确切地回答您如何修复闪烁,但我可以告诉您,在Jetpack Compose中使用导航组件TopBars和BottomBars的推荐方法是使用Scaffold component和navigation-compose component。

合成导航组件依赖项:

代码语言:javascript
复制
// Navigation
implementation "androidx.navigation:navigation-compose:1.0.0-alpha09"

它仍然处于alpha阶段,但到目前为止,它工作得非常好。只需保持对所有更新的更新。

示例用法:

代码语言:javascript
复制
@Composable
fun App() {
    val navController = rememberNavController()

    Scaffold(
        topBar = {
            TopAppBar {
                Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) {
                    Text(text = "App Title")
                }
            }
        },
        bottomBar = {
            BottomAppBar {
                Row(
                    modifier = Modifier.fillMaxWidth(),
                    horizontalArrangement = Arrangement.SpaceEvenly,
                    verticalAlignment = Alignment.CenterVertically
                ) {
                    TextButton(onClick = { navController.navigate("home") }) {
                        Text(text = "Home")
                    }
                    TextButton(onClick = { navController.navigate("favorites") }) {
                        Text(text = "Favorites")
                    }
                    TextButton(onClick = { navController.navigate("profile") }) {
                        Text(text = "Profile")
                    }
                }
            }
        }
    ) {
        NavHost(navController, startDestination = "home") {
            composable("home") {
                Home()
            }
            composable("favorites") {
                Favorites()
            }
            composable("profile") {
                Profile()
            }
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66638286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档