在我的应用程序中,我正在以编程方式更改状态栏的颜色。但是,当我更改主题时,我想通过从attrs.xml获取状态栏颜色并将其以编程方式应用于状态栏来做同样的事情。
style.xml
<style name="AppThemeDark" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">#002b27</item>
</style>
<style name="AppThemeLight" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">#e0e7e6</item>
</style>
attrs.xml
<declare-styleable name="theme">
<attr name="colorPrimary" format="color"/>
</declare-styleable>
MainActivity.Java
int[] attrs = {R.attr.statusBarColorInboxTop};
TypedArray ta = getApplicationContext().obtainStyledAttributes(attrs);
int color = ta.getResourceId(0, android.R.color.holo_blue_dark);
ta.recycle();
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
getWindow().setStatusBarColor(getResources().getColor(color));