Как менять цвет темы в приложении?

Помогите пожалуйста разобраться как менять цвет темы в приложении. Как я понял в начале надо определить две темы ночную и дневную в 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"

это темный синий цвет, как при смене темы вот этот бекграунд должен получить допустим белый цвет, если в самом Лейауте стоит что бекраунд должен быть темного синего цвета?


Ответы (0 шт):