2012-03-06 9 views
12

Androidメニューのアイコンがあります。 Android 3+ではアイコンが白くなるように黒のActionBarを使用しています。しかし、Android 2.xでは、メニューは本質的に白で、アイコンがほとんど見えないことを意味します。異なるバージョンのメニューアイコンを使用するにはどうすればよいですか?私はres/drawable-mdpi-v11のような別の描画可能なディレクトリを使って行うことができると仮定していますが、別の方法があるかどうか疑問に思っていますので、バージョンやピクセルを追加する密度。Android SDKのバージョンが異なる別のアイコンを使用する

EDIT:Android 2.xで使用するために、res/drawable-mdpiとres/drawable-hdpiにダークバージョンを入れて、光のバージョンをres/drawable-mdpi-v11とres/drawable-hdpi-v11に入れました。 Android 3.x以上で使用するためには、私のAndroid 2.1(sdk 7)エミュレータはまだ軽いバージョンを表示しています。

理由は何ですか?アンドロイドのdevのサイトで見つけた

答えて

19

Styles and Themes開発者ガイドに記載されているように、プラットフォームのバージョンに基づいてテーマを選択できます。このようなあなたのres /値/のstyles.xmlでスタイルを定義します。次に

<style name="ThemeSelector" parent="android:Theme.Light"> 
    ... 
</style> 

をRES /値-V11 /フォルダ内に、(あなたが暗くなら、おそらくホロ)

<style name="ThemeSelector" parent="android:Theme.Holo"> 
    ... 
</style> 
あなたのテーマを選択します

次に、そのスタイルにアイコンを追加します。たとえば、HoneycombGalleryサンプルアプリケーションのstyles.xmlファイルのスニペットを次に示します。

<style name="AppTheme.Dark" parent="@android:style/Theme.Holo"> 
    ... 
    <item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item> 
    <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item> 
    <item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item> 
</style> 

下の3つの要素は、描画可能なディレクトリ内のすべてのアイコンです。解像度固有のアイコンごとに少なくとも1つのフォルダが必要ですが、明るい&の暗いアイコンを同じフォルダにまとめることはできますが、各プラットフォームのバージョンごとに異なるアイコンのフォルダを持つ必要はありません。また、あなたはこのように、値/ attrs.xmlファイル内の参照として、それらをリストする必要があります:あなたが「を使用して、レイアウトのXML内でそれらを参照することができるでしょう指し

<resources> 
    <declare-styleable name="AppTheme"> 
    <attr name="listDragShadowBackground" format="reference" /> 
    <attr name="menuIconCamera" format="reference" /> 
    <attr name="menuIconToggle" format="reference" /> 
    <attr name="menuIconShare" format="reference" /> 
    </declare-styleable> 
</resources> 

れますか? attr/NameOfYourDrawable "dereference、like this:

<item android:id="@+id/menu_camera" 
     android:title="@string/camera" 
     android:icon="?attr/menuIconCamera" 
     android:showAsAction="ifRoom" /> 
6

http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

警告:これらのリソースは、プラットフォームのバージョン間で変更することができますので、あなたがAndroidプラットフォームのリソースIDを使用して、これらのアイコンを参照するべきではない(すなわちandroid.R.drawable下のメニューアイコン) 。任意のアイコンやその他の内部描画可能リソースを使用する場合は、アプリケーションリソースにそれらのアイコンまたはドロワーブラスのローカルコピーを保存し、アプリケーションコードからローカルコピーを参照する必要があります。こうすることで、システムのコピーが変更された場合でも、アイコンの外観を制御できます。以下のグリッドは完全なものではありません。

/resを/描画可能-hdpi(以下アンドロイド2.2用)

(上記のAndroid 2.3用)/のRES /描画可能-hdpi-Vの#

あなたも2.1でこれをテストしたことがあります+携帯電話でエミュレータではありませんか?電話がない場合は、別のAVDを作成してみてください。私はあなたが別々のフォルダが必要になると思います。

うまくいけば、これが役に立ちます。

+0

これは私が必要としていたものです。私は明るく暗いアイコンセットで私のアプリで戦っていた。 2。3を使用し、白いメニューを使用し、3.0以上は標準的なテーマのための暗いメニューを使用して、私はただ1つのアイコンセットを使用することができませんでした。ありがとう! – kenyu73

+1

これが答えになるはずです。うまくいく –

関連する問題