如何在jetpack compose中定义不同的屏幕

Posted

技术标签:

【中文标题】如何在jetpack compose中定义不同的屏幕【英文标题】:How to define different screens in jetpack compose 【发布时间】:2021-09-02 03:26:59 【问题描述】:

我刚刚开始熟悉 Jetpack Compose,据我了解,NavHost 就像 NavHostFragment,它承载不同的可组合项而不是片段。

我很难理解的是,如果我定义一个带有脚手架和 NavHost 的屏幕作为其内容,例如:

setContent
    Scaffold(...)
         NavHost(...)...
    

这使得底部导航栏和脚手架中定义的所有内容都出现在 NavHost 托管的每个可组合项中。如果我想为不同的屏幕设置不同的浮动操作按钮怎么办?我是否必须为这些屏幕启动一个新活动并在那里定义不同的脚手架?

【问题讨论】:

【参考方案1】:

您实际上可以引用 navHostController。您可以通过每次导航时更新变量来跟踪当前屏幕,或者只使用 navController.getCurrentBackStackEntry?.destination 来获取当前屏幕。在您的浮动操作按钮中使用它来相应地设置它

【讨论】:

我明白了..所以我只是获取当前路线并根据我所在的屏幕设置FAB内容。谢谢! 很高兴您的问题解决了。您应该将我的答案标记为解决方案,以便其他人知道该问题已被回答,并且不要多次回答,谢谢

以上是关于如何在jetpack compose中定义不同的屏幕的主要内容,如果未能解决你的问题,请参考以下文章

Jetpack Compose中的绘制流程和自定义布局

如何在jetpack compose中为画布中的路径绘制阴影

利用 JetPack Compose 手写一个自定义布局

Jetpack Compose 自定义布局以及固有特性测量

Jetpack Compose 自定义布局以及固有特性测量

如何在 jetpack compose 中使用改造 API 创建列表视图/网格视图/回收器视图