1. 在attr.xml中 声明所需要的动态改变的颜色
<declare-styleable name="PagerSlidingTabStrip">
<attr name="pstsIndicatorColor" format="color" />
<attr name="pstsUnderlineColor" format="color" />
<attr name="pstsDividerColor" format="color" />
<attr name="pstsIndicatorHeight" format="dimension" />
<attr name="pstsUnderlineHeight" format="dimension" />
<attr name="pstsDividerPadding" format="dimension" />
<attr name="pstsTabPaddingLeftRight" format="dimension" />
<attr name="pstsScrollOffset" format="dimension" />
<attr name="pstsTabBackground" format="reference" />
<attr name="pstsShouldExpand" format="boolean" />
<attr name="pstsTextAllCaps" format="boolean" />
</declare-styleable>
2.在 stylesx.xml中 定义主题,给相应主题设置所需颜色值
<!--黑夜主题-->
<style name="BaseAppThemeNight" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/bottom_navigation</item>
<item name="colorPrimaryDark">@color/bottom_navigation</item>
<item name="android:textColor">@color/black</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="bottom_navigation">@color/bottom_navigation</item>
<item name="common_entire">@color/common_entire</item>
<item name="common_background">@color/common_background</item>
<item name="stress_selected">@color/stress_selected</item>
<item name="icon_button_common">@color/icon_button_common</item>
<item name="icon_button_clicked">@color/icon_button_clicked</item>
<item name="content_background">@color/content_background</item>
<item name="icon_button_clicked2">@color/icon_button_clicked2</item>
<item name="info__click_avatar_strike">@color/info__click_avatar_strike</item>
<item name="icon_button_normal">@color/icon_button_normal</item>
<item name="important_fonts_title">@color/important_fonts_title</item>
<item name="guide_fonts">@color/guide_fonts</item>
<item name="secondary_fonts">@color/secondary_fonts</item>
<item name="special_fonts">@color/special_fonts</item>
</style>
3.layout.xml中引用色值
android:textColor="?attr/important_fonts_title"
android:background="?attr/common_entire"
4.在java代码中引用色值
TypedArray array = mContext.getTheme().obtainStyledAttributes(new int[] {
R.attr.important_fonts_title, //文字选中色
R.attr.guide_fonts, //文字未选中色
R.attr.stress_selected, //背景选中色
R.attr.common_background, //背景未选中色
});
int important_fonts_title = array.getColor(0, R.color.white);
int guide_fonts = array.getColor(1, R.color.white);
int stress_selected = array.getColor(2, R.color.white);
<declare-styleable name="PagerSlidingTabStrip">
<attr name="pstsIndicatorColor" format="color" />
<attr name="pstsUnderlineColor" format="color" />
<attr name="pstsDividerColor" format="color" />
<attr name="pstsIndicatorHeight" format="dimension" />
<attr name="pstsUnderlineHeight" format="dimension" />
<attr name="pstsDividerPadding" format="dimension" />
<attr name="pstsTabPaddingLeftRight" format="dimension" />
<attr name="pstsScrollOffset" format="dimension" />
<attr name="pstsTabBackground" format="reference" />
<attr name="pstsShouldExpand" format="boolean" />
<attr name="pstsTextAllCaps" format="boolean" />
</declare-styleable>
2.在 stylesx.xml中 定义主题,给相应主题设置所需颜色值
<!--黑夜主题-->
<style name="BaseAppThemeNight" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/bottom_navigation</item>
<item name="colorPrimaryDark">@color/bottom_navigation</item>
<item name="android:textColor">@color/black</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="bottom_navigation">@color/bottom_navigation</item>
<item name="common_entire">@color/common_entire</item>
<item name="common_background">@color/common_background</item>
<item name="stress_selected">@color/stress_selected</item>
<item name="icon_button_common">@color/icon_button_common</item>
<item name="icon_button_clicked">@color/icon_button_clicked</item>
<item name="content_background">@color/content_background</item>
<item name="icon_button_clicked2">@color/icon_button_clicked2</item>
<item name="info__click_avatar_strike">@color/info__click_avatar_strike</item>
<item name="icon_button_normal">@color/icon_button_normal</item>
<item name="important_fonts_title">@color/important_fonts_title</item>
<item name="guide_fonts">@color/guide_fonts</item>
<item name="secondary_fonts">@color/secondary_fonts</item>
<item name="special_fonts">@color/special_fonts</item>
</style>
3.layout.xml中引用色值
android:textColor="?attr/important_fonts_title"
android:background="?attr/common_entire"
4.在java代码中引用色值
TypedArray array = mContext.getTheme().obtainStyledAttributes(new int[] {
R.attr.important_fonts_title, //文字选中色
R.attr.guide_fonts, //文字未选中色
R.attr.stress_selected, //背景选中色
R.attr.common_background, //背景未选中色
});
int important_fonts_title = array.getColor(0, R.color.white);
int guide_fonts = array.getColor(1, R.color.white);
int stress_selected = array.getColor(2, R.color.white);
int common_background = array.getColor(3, R.color.white);
5.最后记得设置你需要的Activity设置动态主题
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.BaseAppThemeNight);
}
或者直接设置application的主题