2013-05-18 13 views
29

私は現在、ホロのテーマに基づいてデザインに基づいてアプリケーションに取り組んでいます。私がやりたいことは全世界的に働いていますが、私はちょっとフォルダの作業方法について少し混乱していますvaluesvalues-v11values-v14値と値のスタイルとテーマ-v11と値-v14のフォルダ

だから私はことを知っている:

  • valuesは11
  • values-v11に劣るAPIを目標としている11と13
  • values-v14間のAPIは、13
に優れたAPIを目標としている目標としています

最初は、すべてのフォルダーごとにアプリケーションに必要なすべてのスタイルを指定する必要があると思っていましたが、その後、ある種の継承sy茎が適所にあった。

私の問題は、私が本当に混乱していることと、これらの3つのフォルダ間でどのようにこの継承が働いているのかをはっきりと理解できないことです。

私は自分の携帯電話上で動作を確認するために、次の試験(フォルダvalues-v14がロードされたものでなければならないので、アンドロイド4.0上で実行されている)でした:私は青に設定するスタイルを持っているvalues

テキストの色:

:私は白にテキストの色を設定するためのスタイルを持っている values-v11

<style name="TextMedium" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textColor">@color/Blue</item> 

(異なる色を持つすべてのフォルダ)上記第一のケースでは

<style name="TextMedium" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textColor">@color/Red</item> 

、ロードされた色:私は赤のテキストの色を設定するためのスタイルを持っているvalues-v14

<style name="TextMedium" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textColor">@color/White</item> 

私のテキストの上には、values-v14フォルダが優先されることを意味する赤色です。

次に、values-v14フォルダの赤いスタイルをコメントアウトすると、テキストが白くなります。これは、デバイスがvalues-v14フォルダをターゲティングしていても、システムがvalues-v11フォルダ内のスタイルをとることを意味しますか?私はおそらくvaluesフォルダを使うと思っていましたが、values-v11ではありません。

さらに一般的には、私の質問は、これらの3つのフォルダが親と子として動作しているかどうかです。 ことを意味:デバイスは> 13 APIのバージョンで実行されている場合、システムはその後、values-v14values-v11、最後にvaluesをロードします

  • デバイスが11〜13のAPIで実行されている場合、システムはvalues-v11をロードし、次にvaluesをロードします。
  • デバイスがAPIバージョン< 11で実行されている場合、システムはvaluesだけを読み込みます。

実際に動作している場合は、親フォルダvaluesのスタイルを最大限に設定し、v11またはv14に特定のスタイルのみを追加することは意味がありますか?

長い質問には申し訳ありませんが、私はそれが明らかであると思い、このテーマ/スタイルシステムは唯一のAndroidガイドで簡単に説明し、どのように動作するかについての情報を見つけることは困難である...あなたのための

感謝助けて!

+4

ターゲットAPI> = 14、 'values-v11'ターゲットAPI(11と13を含む)** ** values-v14が存在する場合** **それ以外の**すべてのバージョンと一致します11歳以上で始まります。 'values'はデフォルトのフォルダであり、他の' values-xx'フォルダでカバーされていない他のAPIレベルを網羅しています。 – Luksprog

+0

ありがとうLuksprog。その仕組みに基づいて、より低いバージョンでは使用できないv11とv14のスタイルだけをセットアップする方が良いということですか? (そして、私が 'values'に投稿したもののような単純なスタイルを維持するために) –

+2

それは、そのバージョンから追加された属性を使用するときにバージョンインジケータを使用するという考えです。たとえば、HoneycombはListViewに 'activatedBackgroundIndicator'属性を導入しました。これは '11'の下には存在しないので、' values'フォルダはこれを使用しませんが、 'values-v11'フォルダをインクルードして、それを持つバージョンの属性をアプリの中で利用することができます。しかし、別のフォルダがある場合は、他のスタイルを表示する必要があります。 – Luksprog

答えて

25

もっと一般的には、私の質問は、これらの3つのフォルダは親として働いているのですか と子供ですか?

  • values-v14ターゲットのAPI> = 14(それがで選択されません。これらのフォルダは、それが最も近い(下)APIレベルvaluesフォルダに一致する意味「最も具体的な」マッチングシステムで動作

全て14以下バージョン)

  • values-v11ターゲットとの間のAPI(および含む)1113ためvalues-v14はマットうさもなければ存在する場合(11より下のバージョンではまったく選択されません)
  • valuesがデフォルトのフォルダであり、最後に一致し、別のvalues-xxに含まれていない他のAPIレベルをカバーしますフォルダ。それは確かにそれが機能している方法であればいつでも(すべてのリソースのフォルダと同じように)、それは親フォルダに セットアップし、その後スタイルの最大の意味を持たない、あなたのアプリ
  • でこのフォルダを持っている必要がありますv11またはv14では の特定のものだけを追加しますか?

    はい、これは(あなたがCreate new project...を使用する場合)、それは実際にあなたがvalues-xxカスタマイズ用のフォルダを使用するように指示Androidのプロジェクトテンプレートが構築されている方法です(異なる外観、新しいスタイルの使用を、属性):

    <!-- in the styles.xml from the v-14 values folder: --> 
    <!-- API 14 theme customizations can go here. --> 
    
    関連する問題