进入上下文操作模式时更改状态栏颜色
Change Status Bar color when entering Contextual Action Mode
我有一个应用程序使用主题属性 (colorPrimaryDark) 为 Android v21+ 上的状态栏着色:
这工作正常。现在,当用户长按列表项并进入上下文操作模式时,我可以使用属性 actionModeBackground 为 CAB 栏着色,因此它看起来像这样:
所以操作栏是灰色的,这是我想要的,但是状态栏仍然使用主题深色着色.我不想要那个,我想把它改成深灰色或黑色。
我该怎么做?我看不到任何适用于此处的主题属性。
private int statusBarColor;
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//hold current color of status bar
statusBarColor = getWindow().getStatusBarColor();
//set your gray color
getWindow().setStatusBarColor(0xFF555555);
}
...
}
...
@Override
public void onDestroyActionMode(ActionMode mode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//return to "old" color of status bar
getWindow().setStatusBarColor(statusBarColor);
}
...
}
});
将它放在您的应用程序主题上(style.xml 和 v21 style.xml)或为您要更改的地方创建自定义主题。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_secondary</item>
<item name="colorAccent">@color/color_accent</item>
**<item name="android:statusBarColor">@color/**YOUR_COLOR**</item>**
</style>
</resources>
如果您使用 AppCompat,那么您可以在 colors.xml
中像这样更改颜色
<color name="abc_decor_view_status_guard_light" tools:override="true">@color/colorBackgroundLight</color>
<color name="abc_decor_view_status_guard" tools:override="true">@color/colorBackgroundDark</color>
我有一个应用程序使用主题属性 (colorPrimaryDark) 为 Android v21+ 上的状态栏着色:
这工作正常。现在,当用户长按列表项并进入上下文操作模式时,我可以使用属性 actionModeBackground 为 CAB 栏着色,因此它看起来像这样:
所以操作栏是灰色的,这是我想要的,但是状态栏仍然使用主题深色着色.我不想要那个,我想把它改成深灰色或黑色。
我该怎么做?我看不到任何适用于此处的主题属性。
private int statusBarColor;
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//hold current color of status bar
statusBarColor = getWindow().getStatusBarColor();
//set your gray color
getWindow().setStatusBarColor(0xFF555555);
}
...
}
...
@Override
public void onDestroyActionMode(ActionMode mode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//return to "old" color of status bar
getWindow().setStatusBarColor(statusBarColor);
}
...
}
});
将它放在您的应用程序主题上(style.xml 和 v21 style.xml)或为您要更改的地方创建自定义主题。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_secondary</item>
<item name="colorAccent">@color/color_accent</item>
**<item name="android:statusBarColor">@color/**YOUR_COLOR**</item>**
</style>
</resources>
如果您使用 AppCompat,那么您可以在 colors.xml
中像这样更改颜色<color name="abc_decor_view_status_guard_light" tools:override="true">@color/colorBackgroundLight</color>
<color name="abc_decor_view_status_guard" tools:override="true">@color/colorBackgroundDark</color>