Android状态栏和导航问题

时间:2019-02-03 21:00:36

标签: java android android-studio android-layout android-fragments

最近我在Main_Activity中使用了以下Java代码:

(getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS))

用于状态栏透明目的。一切顺利,但我的Android导航栏也采用了透明策略。 现在,我只需要透明状态栏,而无需导航栏。

1 个答案:

答案 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"添加到活动布局的顶部。