web-dev-qa-db-ja.com

styles.xmlとthemes.xmlの違いは何ですか

styles.xmlthemes.xmlの違いは何ですか?私には、両方のXMLが同じ形式であるため、それらは同じように見えます。

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

それで、カスタマイズの色、サイズ、ドロウアブルを提供する私のアプリでは... styles.xmlthemes.xmlの両方も必要ですか?どのXMLをどのファイルに入れるかをどのように決定すればよいですか?

57
Cheok Yan Cheng

スタイルとテーマ のページ全体から。この行を探しているかもしれません。

レイアウト内の単一のビューにスタイルを適用すると、スタイルによって定義されたプロパティはそのビューにのみ適用されます。スタイルがViewGroupに適用される場合、子View要素はスタイルプロパティを継承しません。スタイルを直接適用する要素のみがそのプロパティを適用します。ただし、スタイルをテーマとして適用することにより、すべてのビュー要素に適用されるようにスタイルを適用できます。

テーマとして適用すると、アクティビティに適用したか、アプリケーションに適用したかに応じて、スコープ内のすべてが変更されます。スタイルはより「ローカル」です。

81
wtsang02

Android APIガイドから引用:

スタイルのセットを作成するには、プロジェクトのres/values/ディレクトリにXMLファイルを保存します。 XMLファイルの名前は任意ですが、.xml拡張子を使用し、res/values/フォルダーに保存する必要があります。 XMLファイルのルートノードは<resources>でなければなりません。

完全なドキュメント

したがって、res/values/フォルダーにあるxmlファイルである限り、どのファイルにスタイルを入れても問題にはなりません。

27
iceagle

多くの回答が示しているように、styles.xmlとthemes.xmlの間に機能的な違いはありません。

Googleのiosched2014アプリにはstyles.xmlのみ(themes.xmlはありません)があることに注意してください。

https://github.com/google/iosched

13
Jim Vitek

スタイルとテーマ ドキュメントのスタイルの定義セクションから取得:

スタイルのセットを作成するには、プロジェクトのres/values /ディレクトリにXMLファイルを保存します。 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