используйте значение атрибута, чтобы установить цвет
, например, вот цвет для textview
<attr name="textviewcolor" format="color"></attr>
создать разные стили для выбора другой темы в style.xml
вот цвет текста для стиля темной темы
<style name="AppTheme.Dark" parent="Theme.AppCompat.Light.NoActionBar"><item name="textviewcolor">#fff</item></style>
вот цвет текста для стиля темы по умолчанию
<style name="AppTheme.Defult" parent="Theme.AppCompat.Light.NoActionBar"><item name="textviewcolor">#000</item></style>
используйте это значение атрибута (textviewcolor) для textview, чтобы установить цвет, подобный этому
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text"
android:textColor="?attr/textviewcolor"/>
вам просто нужно изменить название темы в sharedpreference при нажатии кнопки и обновить действие, остальные вещи упоминаютсяниже, как вы собираетесь это сделать ..
сначала создайте класс утилит темы, подобный этому
public class ThemeUtil {
public static final int THEME_DEFAULT=1;
public static final int THEME_DARK=2;
public static final int ALERTTHEME=3;
public static final int ALERTTHEMEDARK=4;
public static int getThemeId(int theme){
int themeId=0;
switch (theme){
case THEME_DARK:
themeId = R.style.AppTheme_Dark;
break;
case THEME_DEFAULT :
themeId = R.style.AppTheme;
break;
default:
break;
}
return themeId;
}}
предложение: используйте sharedpreference, чтобы дать имяваша тема
затем создайте один абстрактный класс, чтобы установить тему для всей деятельности, используя расширение этого класса
public class ChangethemeActivity extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//get your theme name using sharedpreference and check what you have saved in theme name value
if(dark){
setTheme(ThemeUtil.getThemeId(1));
}
else{
setTheme(ThemeUtil.getThemeId(2));
} }}}
и, наконец: use ChangethemeActivity в действии вместо AppCompatActivity в вашей деятельности, где вы хотите сменить тему
это способ, которым я достиг функции смены темы в приложении, дайте мне знать, если это решило вашу проблему