私は現在、Holoテーマに基づいてデザインを作成するためにアプリに取り組んでいます。私がやりたいことはグローバルに機能していますが、values
、values-v11
、およびvalues-v14
のフォルダーの機能について少し混乱しています。
だから私はそれを知っています:
values
は11未満のAPIをターゲットにしていますvalues-v11
は11から13までのAPIをターゲットにしていますvalues-v14
は13より優れたAPIをターゲットにしています最初は、すべてのフォルダーにアプリに必要なすべてのスタイルを指定する必要があると思いましたが、その後、一種の継承システムが導入されていることに気付きました。
私の問題は、私が本当に混乱していて、これら3つのフォルダー間でこの継承がどのように機能しているかを明確に理解していないことです。
携帯電話での動作を確認するために、次のテストを実行しました(Android 4.0で実行されているため、フォルダーvalues-v14
がロードされているはずです):
values
には、テキストの色を青で設定するスタイルがあります。
<style name="TextMedium" parent="@Android:style/TextAppearance.Medium">
<item name="Android:textColor">@color/Blue</item>
values-v11
には、テキストの色を白で設定するスタイルがあります。
<style name="TextMedium" parent="@Android:style/TextAppearance.Medium">
<item name="Android:textColor">@color/White</item>
values-v14
では、テキストの色を赤で設定するスタイルがあります。
<style name="TextMedium" parent="@Android:style/TextAppearance.Medium">
<item name="Android:textColor">@color/Red</item>
上記の最初のケース(異なる色のすべてのフォルダー)では、テキストに読み込まれる色は赤です。つまり、values-v14
フォルダーが優先されます。
次に、values-v14
フォルダから赤いスタイルをコメントアウトすると、テキストが白くなります。これは、デバイスがvalues-v11
フォルダーをターゲットにしている場合でも、システムがvalues-v14
フォルダーのスタイルを採用することを意味しますか?デフォルトではvalues
フォルダーを使用するかもしれませんが、values-v11
は使用しないと思いました。
より一般的には、私の質問は、これらの3つのフォルダーが親子として機能しているかどうかです。つまり:
values-v14
、次にvalues-v11
、最後にvalues
をロードします。values-v11
、次にvalues
をロードします。values
のみをロードします。それが実際に機能している場合、親フォルダーvalues
に最大のスタイルを設定し、v11またはv14で特定のスタイルのみを追加することは理にかなっていますか?
長い質問で申し訳ありませんが、このテーマ/スタイルシステムはAndroidガイドで簡単に説明されているだけで、どのように機能するかについての情報を見つけるのは難しいです...
ご協力いただきありがとうございます!
より一般的には、私の質問は、これらの3つのフォルダーが親子として機能しているかどうかです。
これらのフォルダーは、「最も具体的な」マッチングシステムで動作します。つまり、最も近い(より低い)APIレベルのvalues
フォルダーと一致します。
values-v14
_ターゲットAPI> = _14
_(_14
_より前のバージョンではまったく選択されません)values-v11
_は、_11
_が存在する場合は_13
_と_values-v14
_の間(およびそれを含む)のAPIを対象としますそれ以外の場合 _11
_以降で始まるすべてのバージョンに一致します((_11
_より前のバージョンではまったく選択されません))values
はデフォルトのフォルダーであり、最後に照合され、別の_values-xx
_フォルダーではカバーされない他のAPIレベルをカバーします。常に(すべてのリソースフォルダーと同様に)アプリにこのフォルダーを含める必要がありますそれが実際に機能している場合、親フォルダーの値に最大のスタイルを設定し、v11またはv14に特定のスタイルのみを追加することは意味がありますか?
はい、これはAndroidプロジェクトテンプレートの構築方法です(_Create new project...
_を使用する場合)。実際には、カスタマイズに_values-xx
_フォルダーを使用するように指示されます(異なる外観、新しいスタイル、属性の使用):
_ <!-- in the styles.xml from the v-14 values folder: -->
<!-- API 14 theme customizations can go here. -->
_