Переключение стилей

Допустим, у меня есть несколько файлов styles.xml (конечно, с разными именами) для тем. Можно ли выбрать, из какого файла приложение должно извлекать?

Белый стиль:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="mybutton">
        <item name="android:layout_width">45dp</item>
        <item name="android:layout_height">fill_parent</item>
        <item name="android:textColor">#202020</item>
        <item name="android:textSize">20dp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:background">@drawable/white_btnbg</item>
    </style>

...

Черный стиль:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="mybutton">
        <item name="android:layout_width">45dp</item>
        <item name="android:layout_height">fill_parent</item>
        <item name="android:textColor">#FFFFFF</item>
        <item name="android:textSize">20dp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:background">@drawable/black_btnbg</item>
    </style>

...

Итак, в моем макете xml все стили моей кнопки будут установлены на «mybutton», и в зависимости от того, какую тему выбрал пользователь, он будет извлекаться из координирующего файла. Поскольку невозможно изменить стиль представления во время выполнения, возможно ли это сделать? Или есть лучший способ (я уверен, что есть) изменить стили?


person bwoogie    schedule 18.02.2012    source источник


Ответы (1)


Используйте несколько стилей с разными именами. Затем вы можете установить фон программно:

Button b = new Button(this);
b.setBackgroundResource(R.drawable.blabla);
person Murat    schedule 18.02.2012
comment
Я это знаю, но вопрос не в этом. - person bwoogie; 19.02.2012
comment
Вы не можете изменить стиль во время выполнения, но вы можете изменить стиль, который использует представление. так что вы можете использовать несколько стилей, и вы можете решить, какой из них использовать во время выполнения программно. - person Murat; 19.02.2012
comment
Я что-то упускаю из виду? :) Вы можете создавать различные xml-файлы, определяющие стили ваших кнопок. поместите их в папку с возможностью переноса. когда пользователь выбирает тему, например, при нажатии кнопки, измените фон всех кнопок в вашем приложении программно. - person Murat; 19.02.2012
comment
Нет, вы правильно поняли.. Но чтобы сделать это таким образом, я должен изменить фон, цвет текста и т. д. каждый по одному. Мне интересно, есть ли более простой способ. - person bwoogie; 19.02.2012