使用Android Navigation Component,如何使actionBar透明并在单个Fragment中使布局全屏?
Posted
技术标签:
【中文标题】使用Android Navigation Component,如何使actionBar透明并在单个Fragment中使布局全屏?【英文标题】:Using Android Navigation Component, how to make actionBar transparent and make layout full screen in single Fragment? 【发布时间】:2020-04-24 02:37:29 【问题描述】:我将 Google 推荐的单一活动模式与 android Jetpack 的导航组件一起使用。
我正在努力实现this design。我想让 actionBar(如果可能的话,还有 statusBar)在单个 Fragment 中透明。我还需要让我的 XML 布局中的摄像头视图填满整个屏幕,因此 actionBar(可能还有 statusBar)位于其顶部。
我已经尝试过诸如supportActionBar?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
和.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
之类的技巧以及其他技巧,但似乎没有一个可以正常工作。要么他们什么都不做,要么将 actionBar 移动到 statusBar 的顶部,要么产生其他不希望的效果。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:每当我需要一个透明的操作栏时,这都对我有用:
getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
actionBar.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
希望对你有帮助
【讨论】:
如果使用活动而不是 Androidx 导航组件/片段,此代码似乎效果最佳。我尝试在我的 Fragment 上应用它,并得到 "requestFeature() must be called before added content" 错误。然后我尝试在我的 MainActivity 中应用它,但没有效果。 哦,好吧是有道理的。我会调查一下,看看我是否能找到解决您问题的方法。很抱歉那没有用。那么您是否要使片段透明?您是否尝试在片段的 xml 中将其背景颜色设置为透明?您还使用导航视图吗? 您也尝试过使用背景颜色的 alpha 值吗?以上是关于使用Android Navigation Component,如何使actionBar透明并在单个Fragment中使布局全屏?的主要内容,如果未能解决你的问题,请参考以下文章
Android Jetpack之Navigation源码分析
Android Jetpack - 使用 Navigation 管理页面跳转