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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

https://github.com/google/iosched

Ответ 4

Из раздела Стили и темы в разделе Определение стилей:

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

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

Ответ 5

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

<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>

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

Ответ 6

Привет, вот статья, касающаяся разницы между стилями и темами XML в android пройдите

А также здесь андроид документация относительно стилей и тем в Android.