Как задать background color в теме стиля на android?

325
14 мая 2017, 23:02

Как задать background color при нажатии на элемент в теме стиля на android? Надо сделать чтобы это работало для всего приложения. Перепробовал кучу параметров не получается никак.

Answer 1

У меня не получилось выставить бэкгр нажатия всех элементов в styles.xml пришлось выставлять для каждого элемента или активности отдельно в ее layout файле для этого создал вот такие файлы в drawable присвоив их элементам в layout (android:background="@drawable/st_background_btn"):

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid android:color="@android:color/holo_blue_light"/>
        </shape>
    </item>
    <item >
        <shape>
            <solid android:color="@android:color/black"/>
        </shape>
    </item>
</selector>

Для actionBar у меня все же получилось выставить в styles.xml в тему такой итем который менял бы бэкграунд нажатия значка:

 <item name="android:actionBarItemBackground">@drawable/st_background</item>

Для TabHost табов пришлось сделать отдельные layout и там задать им background

Answer 2

Это невозможно - стиль - статический файл, он упаковывается вместе с остальными ресурсами на этапе компиляции и его невозможно изменить в рантайме.

У вас 2 выхода:

  1. Создать несколько тем с разными цветами, жестко заданными заранее. В нужный момент сохранить куда-то какую тему надо отображать и пересоздать все активити. В onCreate каждой активити задать стиль, взятый на основе созранённого ранее значения. Например цифры/строки в БД/SharedPreferences

  2. Не использовать стили. Просто хранить где-то нужный цвет и в ручную задавать его всем нужным элементам в нужный момент

READ ALSO
Как получить переменные в Spring MVC после JavaScript .Fetch()

Как получить переменные в Spring MVC после JavaScript .Fetch()

На фронте работал метод $ajax() и было все хорошо

266
Как сделать что бы не вылетало?

Как сделать что бы не вылетало?

Написал простое приложение Ехо звукаПроблема в том что при переходе в другие приложения звук отключается

322
Partition problem

Partition problem

Приветствую всех! Есть такая задача: вводится n чисел (1 < n < 1000 , у вводимых чисел тот же диапазон)Нужно разбить числа на два массива с минимальной...

269
ExceptionInInitializerException при вызове Jsoup.connect().get();

ExceptionInInitializerException при вызове Jsoup.connect().get();

Использовал Jsoup в андроид приложениях, все работало нормальноТот же самый jsoup

269