Не меняется цвет приложения

234
09 ноября 2018, 22:50

При установки кастомной темы setTheme() почему-то меняется только цвет ColorPrimaryDark . Вот сама тема

<style name="Red" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="android:colorPrimary">#ca3030</item>
        <item name="android:colorPrimaryDark" >#a42525</item>
</style>

Тему меняю из собственного класса ThemeUtils Вот сам класс

package alphacorp.com.touristapp;
import android.app.Activity;
import android.content.Intent;
public class ThemeUtils{
    private static int sTheme;
    public final static int FIRE_BRICK = 0;
    public final static int DODGER_BLUE = 1;
    public static void changeToTheme(Activity activity, int theme) {
        sTheme = theme;
        activity.finish();
        activity.startActivity(new Intent(activity, activity.getClass()));
        activity.overridePendingTransition(android.R.anim.fade_in,
                android.R.anim.fade_out);
    }
    public static void onActivityCreateSetTheme(Activity activity) {
        switch (sTheme) {
            default:
                activity.setTheme(R.style.AppTheme);
                break;
            case R.id.red:
                activity.setTheme(R.style.Red);
                break;
            case R.id.vk:
                activity.setTheme(R.style.Vk);
                break;
            case R.id.green:
                activity.setTheme(R.style.Green1);
                ;break;
            case R.id.pink1:
                activity.setTheme(R.style.Pink);
                ;break;
            case R.id.orange:
                activity.setTheme(R.style.Orange);
                ;break;
            case R.id.black:
                activity.setTheme(R.style.Black);
            case R.id.green2:
                activity.setTheme(R.style.Green2);
            case R.id.blue:
                activity.setTheme(R.style.Blue2);
            case R.id.pink2:
                activity.setTheme(R.style.Pink2);
        }
    }
}
Answer 1

Попробуйте без префикса android:, а также если это тема задается для активити, то в качестве родительской темы нужно указать Theme.AppCompat (либо Theme.AppCompat.Light для светлой темы):

<style name="Red" parent="Theme.AppCompat">
    <item name="colorPrimary">#ca3030</item>
    <item name="colorPrimaryDark">#a42525</item>
</style>

Также имейте ввиду, что если выставляете setTheme() динамически из кода, то лучше это делать до вызова super.onCreate() в активити.

А также: возможно, что у вас у тулбара заданы собственные стили, из-за чего вы не видите изменений.

READ ALSO
Android сжатие изоброжения

Android сжатие изоброжения

ЗдраствуйтеУ меня есть изоброжения в обьекте File

200
Локализация приложения для стран СНГ

Локализация приложения для стран СНГ

Есть два набора строковых ресурсов: дефолтный (англ) и русскийНеобходимо, установить русский язык, если пользователь выберет белорусский,...

221
Вечная консольная ошибка Error in event handler for runtime.onMessage

Вечная консольная ошибка Error in event handler for runtime.onMessage

Регулярно на сайтах, которые я делаю, вылезает следующая ошибка:

429
Числа, начинающиеся с нуля, в JavaScript

Числа, начинающиеся с нуля, в JavaScript

Набираю в консоли Google Chrome следующий пример (и получаю интересный результат):

246