What is difference among styles.xml and themes.xml

AndroidAndroid ThemeAndroid Styles

Android Problem Overview


May I know what is the difference between styles.xml and themes.xml? To me, they just look same as both XML are in the same format.

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

So, in my app which provide customization coloring, size, drawable, ... do I need both styles.xml and themes.xml as well? How should I decide which XML to put in which file?

Android Solutions


Solution 1 - Android

Out of the whole page of the Styles and Themes. You may be looking for this line.

> When you apply a style to a single View in the layout, the properties > defined by the style are applied only to that View. If a style is > applied to a ViewGroup, the child View elements will not inherit the > style properties—only the element to which you directly apply the > style will apply its properties. However, you can apply a style so > that it applies to all View elements—by applying the style as a theme.

When you apply as theme, it changes everything in scope, depending if you applied it on Activity or Application. Style is more 'local'.

Solution 2 - Android

Quoted from Android API guide: >To create a set of styles, save an XML file in the res/values/ directory of your project. The name of the XML file is arbitrary, but it must use the .xml extension and be saved in the res/values/ folder. The root node of the XML file must be <resources>.

Full documentation

So I guess it really doesn't matter if you put any styles in any files as long as it's an xml file which locates in res/values/ folder.

Solution 3 - Android

There is no functional difference between styles.xml and themes.xml as many answers have indicated.

It is worth noting that Google's iosched2014 app has ONLY a styles.xml (no themes.xml).

https://github.com/google/iosched

Solution 4 - Android

Taken from the Styles and Themes document, in the Defining Styles section:

> To create a set of styles, save an XML file in the res/values/ directory of your project. The name of the XML file is arbitrary, but it must use the .xml extension and be saved in the res/values/ folder. > > The root node of the XML file must be .

Solution 5 - Android

I am just realizing that for example Toolbar text colors go into a theme declaration, and for other aspects go into a style declaration

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

And in the toolbar declaration

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

I tried to omit the theme by moving its items into the style, but that didn't work. So in this case it seems as these are just styles which are as theme since they affect the inherited children in the toolbar such as the textfields.

Solution 6 - Android

Hi here is an article regarding to the difference between styles and themes XML in android please go through

And also here the android documentation regarding to styles and themes in Android.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCheok Yan ChengView Question on Stackoverflow
Solution 1 - Androidwtsang02View Answer on Stackoverflow
Solution 2 - AndroidiceagleView Answer on Stackoverflow
Solution 3 - AndroidJim VitekView Answer on Stackoverflow
Solution 4 - AndroidrsanchezView Answer on Stackoverflow
Solution 5 - AndroidJuan MendezView Answer on Stackoverflow
Solution 6 - AndroidandroidgeekView Answer on Stackoverflow