Navigation Component跳转新Fragment背景透明问题求助
原因分析
Navigation Component 默认采用**添加(add)**的方式加载新 Fragment,旧 Fragment 只会进入停止状态(视图不会被销毁),如果新 Fragment 的根布局没设置不透明背景,就会看到下方的首页内容。而之前用 FrameLayout 时,你应该是用 replace() 直接替换了旧 Fragment,所以没这个问题。
解决办法
1. 给新Fragment设置不透明背景(首选)
打开 database_saved_countries 对应的布局文件,给根布局加上背景色:
<!-- 替换成你需要的背景色,比如主题默认背景 --> android:background="@color/white"
这种方法最简单,还能保留 Navigation 的返回栈特性,按返回键可以回到首页。
2. 修改导航图的跳转逻辑(可选)
如果不需要保留首页在返回栈里,在 nav_graph.xml 中配置跳转的 action:
<action android:id="@+id/action_home_to_database" app:destination="@id/database_saved_countries" app:popUpTo="@id/home_fragment" app:popUpToInclusive="true"/>
popUpTo:指定清理返回栈到首页 FragmentpopUpToInclusive="true":把首页也从栈中移除,此时按返回键直接退出应用
额外检查
- 你的
NavigationMainComponent导航逻辑没问题,无需修改 - 确认新 Fragment 的主题没有使用透明背景样式,若有则替换为不透明主题
内容的提问来源于stack exchange,提问作者Kratos
相关产品推荐
相关产品推荐

