13

Android メニューのアイコンがあります。Android 3+ では黒の ActionBar を使用しているため、アイコンは白です。ただし、Android 2.x では、メニューは本質的に白であるため、アイコンはほとんど見えません。バージョンごとに異なるメニュー アイコンを使用するにはどうすればよいですか? res/drawable-mdpi-v11 のようなさまざまなドローアブル ディレクトリを使用して実行できると想定していますが、別の方法があるかどうか疑問に思っているので、バージョンやピクセルを追加するときにさまざまなディレクトリを作成する必要はありません。密度。

編集: Android 2.x で使用するために res/drawable-mdpi と res/drawable-hdpi にダーク バージョンを配置し、Android で使用するために res/drawable-mdpi-v11 と res/drawable-hdpi-v11 にライト バージョンを配置します。 3.x 以降ですが、私の Android 2.1 (sdk 7) エミュレーターはまだライト バージョンを表示しています。

理由はありますか?

4

2 に答える 2

19

スタイルとテーマの開発ガイドで概説されているように、プラットフォームのバージョンに基づいてテーマを選択できます。次のように res/values/styles.xml でスタイルを定義します。

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

次に、 res/values-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 つのフォルダーが必要ですが、明るいアイコンと暗いアイコンを同じフォルダーにまとめることができますが、プラットフォーム バージョンごとに異なるアイコンのフォルダーを用意する必要はありません。また、次のように、values/attrs.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」逆参照を使用して、レイアウト XML 内でそれらを参照できます。

<item android:id="@+id/menu_camera"
      android:title="@string/camera"
      android:icon="?attr/menuIconCamera"
      android:showAsAction="ifRoom" />
于 2012-03-06T21:59:43.873 に答える
6

Android 開発サイトにあります: http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

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

/res/drawable-hdpi (Android 2.2 以下の場合)

/res/drawable-hdpi-v# (Android 2.3 以降の場合)

エミュレーターではなく、2.1 以降の電話でこれをテストしてみましたか? 電話を持っていない場合は、別の AVD を作成してみてください。個別のフォルダーが必要になると思います。

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

于 2012-03-06T21:57:53.193 に答える