2011-02-01 22 views
20

ハネカムでスムーズに動作するようにアプリを準備しています。私はアンドロイドのテーマに関する小さな美学の質問があります。テーマをアンドロイドバージョンに応じて変更してください

ハニカムの場合は、次のテーマを使用することをお勧めします。

android:theme="@android:style/Theme.Holo.Light" 

私のアプリが以前のバージョンで使用されているときに別のテーマを使用させるにはどうしたらいいですか?事前に

おかげ

答えて

32

EDIT:3.0 SDKのリリースバージョン用に更新。これを行うには


一つの方法は、<uses-sdk android:targetSdkVersion="11">を設定することです。これをあなたの<application>定義の上に置くべきです。これは、使用可能な場合はホログラフィックテーマを使用するようにシステムに指示し、そうでない場合はデフォルトテーマを使用します。

これを行う別の方法は、APIレベル/ OSバージョンに応じて異なるテーマを継承するテーマ、たとえばMyThemeを定義することです。 resource directory qualifiersを使用してこれを行うことができます。

あなたのディレクトリ構造は次のようになります。

res/ 
    values/ 
    styles.xml 
    values-v11/ 
    styles.xml 

res/values/styles.xmlの内容は、のようになります。

<resources> 
    <style name="MyTheme" parent="@android:style/Theme.Light"> 
    ... 
    </style> 
</resources> 

そしてres/values-v11/styles.xmlの内容は、のようになります。

<resources> 
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    ... 
    </style> 
</resources> 

futuホロのテーマはAPIレベルでは必ずしも意味をなさないかもしれないので、後でこのアプローチを調整する必要があるかもしれません。 values-large-v11などの他のディレクトリ修飾子を使用することもできます。それはあなた次第です。

+0

恐ろしく、ローマに感謝します。私はあなたが "将来、HoloのテーマはAPIレベルでは必ずしも意味をなさないということに注意してください。"という意味に興味があります。ホロのテーマが異なるかもしれない、あるいは将来のリリースで全く新しいテーマが追加されたということを意味しますか?したがって、開発者はより多くのテーマに対応する必要がありますか?これにより、NoTitleBarでデフォルトのテーマ(ThemeかTheme.Holoかどうか)を使用するなどの単純な操作は難しくなります。とにかく、どんな説明もありがとう。私はICSを楽しみにしています –

+0

それはかなり近視眼的なコメントでした:-)それを今すぐ打つ。物理的なサイズにかかわらず、HoloはAPI 11+にとって間違いなく理にかなっています。 –

+0

@RomanNurik - ターゲットが11のときでもホロライトを認識するためのオートコンプリートは得られません.project.propertiesのターゲットをandroid-11に変更した後で、プロジェクトをコンパイルでき、オートコンプリート働いた。 –

関連する問題