轻型导航栏Android

lop*_*ael 9 android navigationbar material-design

我想改变(开关)颜色的的导航栏:

黑色背景和白色图标 - > 白色背景和黑色图标.

轻型导航栏

我知道这是可能的,因为我已经看到了在uCrop图书馆由Yalantis:

我已经知道更改状态栏的颜色,我们需要使用android:windowLightStatusBarandroid:windowLightStatusBar可在Android的23.

可能有这种类型的财产吗?

小智 9

对于 API 27+,您可以通过样式执行此操作:

<!-- added in API 27 -->
<item name="android:windowLightNavigationBar">true</item>

<!-- required to contrast the dark buttons -->
<item name="android:navigationBarColor">@android:color/white</item>

<!-- optional -->
<item name="android:navigationBarDividerColor">@android:color/black</item>
Run Code Online (Sandbox Code Playgroud)

虽然 XML 属性是在 API 27 中引入的,但对轻型导航栏的支持是在更早的一个版本中引入的,在 API 26 中,通过SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.

因此,要针对支持它的最早设备,您必须通过代码而不是 XML 样式来实现。


小智 7

您可以在 v26/styles.xml 中控制导航栏背景颜色:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="AppTheme.Base">
        ...
        <item name="android:navigationBarColor">@android:color/white</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

为了使导航栏中按钮的颜色与浅色背景相匹配,您需要在活动的装饰视图上设置 2 个标志。

在您的活动中:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS | 
                                    SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
}
Run Code Online (Sandbox Code Playgroud)

要使其生效,窗口必须请求 FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 而不是 FLAG_TRANSLUCENT_NAVIGATION。

请参阅:https : //developer.android.com/.../View#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR


小智 -27

这个酒吧叫做小吃店,试试这个:

snackBarView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.BLACK));
Run Code Online (Sandbox Code Playgroud)