styles.xml
とthemes.xml
の違いは何ですか?私には、両方のXMLが同じ形式であるため、それらは同じように見えます。
<style name="...
<item name="...
それで、カスタマイズの色、サイズ、ドロウアブルを提供する私のアプリでは... styles.xml
とthemes.xml
の両方も必要ですか?どのXMLをどのファイルに入れるかをどのように決定すればよいですか?
スタイルとテーマ のページ全体から。この行を探しているかもしれません。
レイアウト内の単一のビューにスタイルを適用すると、スタイルによって定義されたプロパティはそのビューにのみ適用されます。スタイルがViewGroupに適用される場合、子View要素はスタイルプロパティを継承しません。スタイルを直接適用する要素のみがそのプロパティを適用します。ただし、スタイルをテーマとして適用することにより、すべてのビュー要素に適用されるようにスタイルを適用できます。
テーマとして適用すると、アクティビティに適用したか、アプリケーションに適用したかに応じて、スコープ内のすべてが変更されます。スタイルはより「ローカル」です。
Android APIガイドから引用:
スタイルのセットを作成するには、プロジェクトの
res/values/
ディレクトリにXMLファイルを保存します。 XMLファイルの名前は任意ですが、.xml
拡張子を使用し、res/values/
フォルダーに保存する必要があります。 XMLファイルのルートノードは<resources>
でなければなりません。
したがって、res/values/
フォルダーにあるxmlファイルである限り、どのファイルにスタイルを入れても問題にはなりません。
多くの回答が示しているように、styles.xmlとthemes.xmlの間に機能的な違いはありません。
Googleのiosched2014アプリにはstyles.xmlのみ(themes.xmlはありません)があることに注意してください。
スタイルとテーマ ドキュメントのスタイルの定義セクションから取得:
スタイルのセットを作成するには、プロジェクトのres/values /ディレクトリにXMLファイルを保存します。 XMLファイルの名前は任意ですが、.xml拡張子を使用し、res/values /フォルダーに保存する必要があります。
The root node of the XML file must be <resources>.
たとえば、ツールバーのテキストの色がテーマの宣言になり、他の側面ではスタイルの宣言になることを認識しています。
<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>
アイテムをスタイルに移動してテーマを省略しようとしましたが、うまくいきませんでした。したがって、この場合、これらはテキストフィールドなどのツールバーの継承された子に影響するため、これらはテーマとしての単なるスタイルのようです。