Как менять цвет темы в приложении?
Помогите пожалуйста разобраться как менять цвет темы в приложении. Как я понял в начале надо определить две темы ночную и дневную в res/themes. Я это сделал, вот ночная
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.MyCinemaApp" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/main_color</item>
<item name="colorPrimaryVariant">@color/second_color</item>
<item name="colorOnPrimary">@color/colorTextIcons</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. Theme.MaterialComponents.Light.NoActionBar -->
</style>
Вот дневная
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.LightMyCinemaApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/colorPrimaryLightThemes</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
После этого создаем в res хml файл style, я это тоже сделал
<resources>
<style name="BlackTheme" parent="@style/Theme.MyCinemaApp"></style>
<style name="LightTheme" parent="@style/Theme.LightMyCinemaApp"></style>
Теперь в мейнактивити пишем
public class MainActivity extends AppCompatActivity implements OnMovieListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.BlackTheme); // изначальная тема в приложении должна быть темной
setContentView(R.layout.activity_main);
initialization();
}
private void initialization(){
switchCompat = findViewById(R.id.switch_id);
switchCompat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(switchCompat.isChecked()){
getApplication().setTheme(R.style.LightTheme);
}
Вроде же все, по идеи у меня при нажатии на switchCompat должна меняться тема в приложении, но ничего не происходит. Кто-то может мне объяснить почему не меняется тема? И за счет чего она вообще меняться должна я тоже особо не понял. У меня у мейн активити у Релетивлейаут стоит
android:background="@color/second_color"
это темный синий цвет, как при смене темы вот этот бекграунд должен получить допустим белый цвет, если в самом Лейауте стоит что бекраунд должен быть темного синего цвета?