最近我在Main_Activity
中使用了以下Java代码:
(getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS))
用于状态栏透明目的。一切顺利,但我的Android导航栏也采用了透明策略。 现在,我只需要透明状态栏,而无需导航栏。
答案 0 :(得分:0)
您有两种选择,首先,我建议您使用一个外部库来进行状态栏样式设置,例如StatusBarUtil库,这样您就可以仅一行来满足您的要求:< / p>
StatusBarUtil.setTransparent(Activity activity) // yo be placed in every activity you want the status bar to be transparent in
该库不会影响导航栏。
只需确保首先在应用程序级别 Gradle 中实现该库:
implementation'com.jaeger.statusbarutil:library:1.5.1'
第二个选项是进行布局自定义,如this tutorial中所述,您可以将以下内容添加到style.xml
中:
<style name="AppTheme.TransparentTheme">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
并将此样式应用于清单中的“活动”:
<activity
android:name=".HomeActivity"
android:theme="@style/AppTheme.TransparentTheme">
</activity>
如本教程中所述:
我已将android:windowDrawsSystemBarBackgrounds设置为true。
这是一个标志,其描述如下:
标记,指示此窗口是否负责绘制 系统栏的背景。如果为true并且窗口不是 浮动时,系统栏以透明背景绘制, 该窗口中的相应区域填充有颜色 在{@link android.R.attr#statusBarColor}和{@link android.R.attr#navigationBarColor}。对应于{@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}。
请不要忘记将属性android:fitsSystemWindows="true"
添加到活动布局的顶部。