Sam*_*wal 7 xml android android-theme android-styles android-statusbar
API级别21或更高级别的状态栏颜色根据我的要求而变化,但是如何更改API级别21以下的颜色。
以下是两个API的屏幕截图
API级别21:

API等级19:

colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FFFFFF</color>
<item name="b" type="color">#FF33B5E5</item>
<item name="p" type="color">#FFAA66CC</item>
<item name="g" type="color">#FF99CC00</item>
<item name="o" type="color">#FFFFBB33</item>
</resources>
Run Code Online (Sandbox Code Playgroud)
Style.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBarOverlay">false</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="tabSelectedTextColor">@color/colorAccent</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
Run Code Online (Sandbox Code Playgroud)
这是我执行更改时发生的情况:

API级别21以下不支持状态栏着色。但是,您可以使用一些技术来达到API级别19。
将此添加到您的build.gradle文件中:
compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
Run Code Online (Sandbox Code Playgroud)
在您的活动之前,使用setContentView方法调用此方法:
private void initStatusBar() {
Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setTintColor(ContextCompat.getColor(this, R.color.primaryDark));
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
window.setStatusBarColor(Color.TRANSPARENT);
}
}
Run Code Online (Sandbox Code Playgroud)
在activity_layout.xml文件中执行此操作后,将此属性添加到顶层布局:
android:fitsSystemWindows="true"
Run Code Online (Sandbox Code Playgroud)
这是它在Lollipop及以上版本上的显示方式:
这是在奇巧上:
| 归档时间: |
|
| 查看次数: |
9239 次 |
| 最近记录: |