Настройка цвета фона темы Android

105

Я пытаюсь изменить цвет фоновой темы по умолчанию, что должно быть легко, но, что удивительно, я не могу заставить его работать. Обратите внимание, что я хочу, чтобы изменение коснулось всего приложения, а не только одного действия. Вот мой код:

styles.xml

<resources>

    <color name="white_opaque">#FFFFFFFF</color>
    <color name="pitch_black">#FF000000</color>

    <style name="AppTheme" parent="android:Theme.Light">
        <item name="android:background">@color/white_opaque</item>
        <item name="android:windowBackground">@color/white_opaque</item>
        <item name="android:colorBackground">@color/white_opaque</item>
    </style>

</resources>

и конечно в манифесте

<application
    .
    .
    .
    android:theme="@style/AppTheme" > 
</application>

Документ Android, с которым я консультировался по вопросам изменения тем: http://developer.android.com/guide/topics/ui/themes.html

Я пробовал переключаться между white_opaque и pitch_black для всех атрибутов xml, но это ничего не меняет. Какие-либо предложения?

Старк
источник
1
Попробуйте удалить альфа-канал
Бланделл
Хорошо, я только что сделал, хотя все равно.
Stark
1
Это лучшее решение, которое я читал stackoverflow.com/a/33213433/963543
Ата Иравани

Ответы:

58

Ладно оказалось, что я совершил действительно глупую ошибку. Устройство, которое я использую для тестирования, работает под управлением Android 4.0.4, уровень API 15.

Файл styles.xml, который я редактировал, находится в папке значений по умолчанию. Я отредактировал файл styles.xml в папке values-v14, и теперь он работает нормально.

Старк
источник
4
Или вы можете просто удалить другие папки стилей, если вы их не используете. У меня была такая же проблема, и я исправил ее с помощью одного файла styles.xml в папке «значения». Моя проблема заключалась в том, что у меня был элемент темы для Activity в файле манифеста (который, конечно, перекрыл AppTheme).
Стивен Хоскинг,
28
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Holo.NoActionBar">
        <item name="android:windowBackground">@android:color/black</item>
    </style>

</resources>
Одед Брейнер
источник
5

Откройте res -> values -> styles.xmlи <style>добавьте эту строку, заменив свой путь к изображению <item name="android:windowBackground">@drawable/background</item>. Пример:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@drawable/background</item>
    </style>

</resources>

Также существует <item name ="android:colorBackground">@color/black</item>проблема, которая повлияет не только на фон вашего главного окна, но и на все компоненты вашего приложения. Прочтите о настройке темы здесь .

Если вам нужны стили для конкретной версии :

Если новая версия Android добавляет атрибуты темы, которые вы хотите использовать, вы можете добавить их в свою тему, сохраняя при этом совместимость со старыми версиями. Все, что вам нужно, это еще один файл styles.xml, сохраненный в каталоге значений, который включает квалификатор версии ресурса. Например:

res/values/styles.xml        # themes for all versions
res/values-v21/styles.xml    # themes for API level 21+ only

Поскольку стили в файле values ​​/ styles.xml доступны для всех версий, ваши темы в values-v21 / styles.xml могут наследовать их. Таким образом, вы можете избежать дублирования стилей, начав с «базовой» темы, а затем расширив ее стилями, зависящими от вашей версии.

Подробнее здесь (документ в теме) .

Бласанка
источник