Utilice diferentes iconos con diferentes versiones de SDK de Android

Tengo iconos para mi menú de Android. En Android 3+ estoy usando un ActionBar negro para que los iconos sean blancos. Sin embargo, en Android 2.x el menú es inherentemente blanco, lo que significa que los iconos son casi invisibles. ¿Cómo puedo utilizar diferentes iconos de menú para diferentes versiones? Estoy asumiendo que puedo hacerlo utilizando diferentes directorios como res / drawable-mdpi-v11, pero me pregunto si hay otra manera, así que no tengo que crear un montón de diferentes directorios como añadir versiones o píxeles Densidades.

EDIT: Puse versiones oscuras en res / drawable-mdpi y res / drawable-hdpi para su uso con Android 2.x y pongo versiones ligeras en res / drawable-mdpi-v11 y res / drawable-hdpi-v11 para su uso con Android 3.x y superior, pero mi Android 2.1 (sdk 7) emulador sigue mostrando la versión ligera.

¿Alguna idea de por qué?

Puede seleccionar un tema basado en la versión de la plataforma, tal como se describe en la guía de desarrollo de Estilos y temas . Defina un estilo en su res / values ​​/ styles.xml como este:

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

Luego, en una carpeta res / values-v11 /, seleccione su tema (probablemente Holo, si está oscuro)

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

A continuación, agregue iconos a ese estilo. Por ejemplo, aquí hay un fragmento del archivo styles.xml de la aplicación de ejemplo HoneycombGallery .

 <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> 

Los elementos de la parte inferior 3 son todos los iconos de los directorios dibujables. Todavía necesitará al menos una carpeta por conjunto de iconos de resolución específica, pero puede combinar los iconos de luz y oscuridad en la misma carpeta, pero no tendrá que tener diferentes carpetas de iconos para cada versión de plataforma. Además, deberá listarlos como referencias en el archivo values ​​/ attrs.xml, de la siguiente manera:

 <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> 

En ese momento, podrá referirse a ellos dentro de su XML de diseño utilizando la desreferencia "? Attr / NameOfYourDrawable", de la siguiente manera:

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

Se encuentra en el sitio de desarrollo de Android: http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

Advertencia: Debido a que estos recursos pueden cambiar entre versiones de plataformas, no debe hacer referencia a estos iconos utilizando los ID de recursos de plataformas Android (es decir, iconos de menú bajo android.R.drawable). Si desea utilizar los iconos u otros recursos internos dibujables, debe almacenar una copia local de esos iconos o dibujables en los recursos de la aplicación y, a continuación, hacer referencia a la copia local del código de la aplicación. De esta manera, puede mantener el control sobre la apariencia de sus iconos, incluso si la copia del sistema cambia. Tenga en cuenta que la cuadrícula de abajo no pretende ser completa.

/ Res / drawable-hdpi (para Android 2.2 y siguientes)

/ Res / drawable-hdpi-v # (para Android 2.3 y versiones posteriores)

¿También ha probado probar esto en un teléfono 2.1+ y no en un emulador? Si no tiene un teléfono, intente crear otro AVD? Me temo que vas a necesitar las carpetas separadas.

Espero que esto ayude.

  • Cómo hacer whatsapp tipo de animación para abrir el menú de la barra de herramientas (barra de acción)
  • ¿Cómo activar / hacer clic en un MenuItem en Android?
  • Cómo agregar una línea entre los elementos en una barra de título de aplicación de menú en Android Studio?
  • Cómo establecer un oyente de clic largo en un MenuItem (en un NavigationView)?
  • Cambiar el tamaño del texto del elemento de menú en android
  • Menú personalizado de PopUp
  • Agregue un separador de sección para el Cajón de navegación en Android
  • Menú ActionBar de Android con elementos de texto verticales (rotados) basados ​​en Proveedor de acciones personalizadas
  • Cómo dividir el menú como cromo
  • Android Contextual Action Bar - Seleccionar todo / Deseleccionar todo
  • Añadir Spinner a la barra de menús de acción
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.