it-swarm.com.ru

В чем разница между styles.xml и themes.xml

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

<style name="...
    <item name="...

Итак, в моем приложении, которое обеспечивает настройку цвета, размера, рисования, ... мне также нужны и styles.xml, и themes.xml? Как мне решить, какой XML поместить в какой файл?

55
Cheok Yan Cheng

Из всей страницы Стили и темы . Возможно, вы ищете эту строку.

Когда вы применяете стиль к одному представлению в макете, свойства определенные стилем применяются только к этому представлению. Если стиль Применительно к ViewGroup дочерние элементы View не наследуют Свойства стиля - только тот элемент, к которому вы непосредственно применяете Стиль будет применять свои свойства. Тем не менее, вы можете применить стиль так что он применяется ко всем элементам View - применяя стиль в качестве темы.

Когда вы применяете как тему, это меняет все в области, в зависимости от того, применили ли вы это в Activity или Application. Стиль более «местный». 

78
wtsang02

Цитируется из руководства по API Android:

Чтобы создать набор стилей, сохраните файл XML в каталоге res/values/ вашего проекта. Имя файла XML является произвольным, но оно должно использовать расширение .xml и быть сохраненным в папке res/values/ . Корневой узел файла XML должен быть <resources>.

Полная документация

Поэтому я думаю, что на самом деле не имеет значения, вставляете ли вы какие-либо стили в какие-либо файлы, если это XML-файл, который находится в папке res/values/.

25
iceagle

Не существует функциональной разницы между styles.xml и themes.xml, как указано во многих ответах.

Стоит отметить, что приложение Google iosched2014 имеет ТОЛЬКО файл styles.xml (без themes.xml).

https://github.com/google/iosched

12
Jim Vitek

Взято из документа Стили и темы в разделе Определение стилей:

Чтобы создать набор стилей, сохраните файл XML в каталоге res/values ​​/ вашего проекта. Имя файла XML является произвольным, но оно должно использовать расширение .xml и быть сохранено в папке res/values ​​/.

The root node of the XML file must be <resources>.
4
rsanchez

Я просто понимаю, что, например, цвета текста панели инструментов входят в объявление темы, а для других аспектов - в объявление стиля

<style name="ToolbarTheme" parent="ThemeOverlay.AppCompat.Light">
    <item name="Android:textColorPrimary">@Android:color/white</item>
    <item name="Android:textColorSecondary">@Android:color/white</item>
</style>

<style name="ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
    <item name="Android:minHeight">?attr/actionBarSize</item>
    <item name="Android:background">@color/colorPrimary</item>
</style>

И в декларации панели инструментов

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    style="@style/ToolbarStyle"
    Android:theme="@style/ToolbarTheme">
</Android.support.v7.widget.Toolbar>

Я пытался опустить тему, переместив ее элементы в стиль, но это не сработало. Так что в этом случае кажется, что это просто стили, которые являются темой, поскольку они влияют на унаследованные дочерние элементы на панели инструментов, такие как текстовые поля. 

0
Juan Mendez