Изменить существующую тему

Я хотел бы знать, возможно ли (и как) настроить существующую тему.

Я ищу, как я могу получить определенный атрибут (например, цвет) и изменить его при запуске Activity и повторно применить измененную тему до setContentView().

Аналогично setTheme(), но вместо использования идентификатора ресурса используйте измененную тему.


person slybloty    schedule 10.09.2012    source источник


Ответы (2)


Почему бы просто не создать свою собственную тему, установив android:parent на тему, которую вы хотите скопировать, а затем установить свои собственные атрибуты? Это продемонстрировано в этой документации, например:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">monospace</item>
    </style>
</resources>

В этом случае стиль CodeFont будет идентичен стилю TextAppearance.Medium, за исключением указанных здесь item. Вы можете сделать то же самое с любой темой, включая тему Holo или Dark по умолчанию или что-то еще.

person Eric    schedule 10.09.2012
comment
Потому что я хочу иметь возможность изменять его каждый раз, когда Activity начинает использовать разные входные значения. Таким образом, это статично. Я изучил это и попробовал, но это не то, что я хочу. - person slybloty; 10.09.2012
comment
Вы не можете изменить стиль программно, извините. Вы можете изменить внешний вид элементов на основе пользовательского стиля, но после того, как стиль задан в XML, его нельзя изменить. - person Eric; 10.09.2012
comment
Это также относится к предварительно загруженным стилям. Я ищу возможность изменить его во время работы. - person slybloty; 10.09.2012
comment
Что ж, как я уже сказал вам, вы не можете изменять стили или редактировать их программно - это все, что нужно для ответа. Удачи, я думаю. - person Eric; 10.09.2012

Основываясь на дальнейших исследованиях и комментариях Эрика, пока невозможно изменить тему программно. Различные темы могут быть применены программно, но не изменены. После того как стиль задан в XML, его нельзя изменить.

person slybloty    schedule 05.10.2012