30

私は現在、Holo テーマに基づいてデザインするために自分のアプリに取り組んでいます。グローバルに私がやりたいことは機能していますが、フォルダーの操作方法について少し混乱していvaluesます。values-v11values-v14

だから私はそれを知っています:

  • values11以下のAPIをターゲットにしています
  • values-v1111 から 13 の間の API をターゲットにしています
  • values-v1413 以上の 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 つのフォルダーは親と子として機能していますか? つまり:

  • デバイスが API バージョン > 13 で実行されている場合、システムはvalues-v14次に読み込まvalues-v11れ、最後にvalues.
  • デバイスが 11 から 13 の間の API で実行されている場合、システムがロードvalues-v11されてからvalues.
  • デバイスが API バージョン 11 未満で実行されている場合、システムはvalues.

それが実際に機能している場合、親フォルダーに最大のスタイルを設定しvalues、v11 または v14 で特定のもののみを追加することは理にかなっていますか?

長い質問で申し訳ありません。明確であることを願っています。このテーマ/スタイル システムは、Android ガイドで簡単に説明されているだけであり、それがどのように機能するかについての情報を見つけるのは困難です...

ご協力いただきありがとうございます!

4

1 に答える 1

26

より一般的には、私の質問は、これらの 3 つのフォルダーは親と子として機能していますか?

これらのフォルダーは、「最も具体的な」一致システムで機能します。つまり、最も近い (より低い) API レベルのvaluesフォルダーに一致します。

  • values-v14ターゲット API >= 14(以下のバージョンではまったく選択されません14)
  • values-v11の間の (および含む) API を対象11とし、が存在する13場合は、それ以降のすべてのバージョンと一致します ((以下のバージョンではまったく選択されません))values-v141111
  • valuesはデフォルトのフォルダーであり、最後に一致するフォルダーになり、別のフォルダーでカバーされていない他の API レベルをカバーしvalues-xxます。(すべてのリソース フォルダーと同様に) アプリには常にこのフォルダーが必要です。

それが実際に機能している場合、親フォルダーの値に最大のスタイルを設定し、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. -->
于 2013-12-31T06:52:24.433 に答える