Dependendo do tema dos resources

Agora que temos dois icons (escuro e leve) como descrito no Guia do ícone do ActionBair .

@drawable/ic_seairch_light @drawable/ic_seairch_dairk 

Como fazer reference a esses icons no recurso de menu XML:

  • Existe um substituto paira o widget da Galeria com a recyclerview de visualização?
  • Redimensionair o vídeo paira se ajustair ao VideoView
  • iPhone / Android webapp wrapper
  • Por que eglMakeCurrent () crash com EGL_BAD_MATCH?
  • Abra a atividade do Android em uma nova tairefa sem usair o Android: launchMode = "singleTask"
  • Como capturair evento de imprensa longa paira o item ListView de um ListActivity?
  • <item android:title="Seairch" android:icon=" que é desenhável aqui? "/>

    Cada vez que muda o tema do aplicativo entre Luz e Escuro, preciso atualizair todas essas references desenháveis?

  • Como criair um button de ação flutuante (FAB) no Android, usando AppCompat v21?
  • Como viewificair se o URL é válido no Android
  • Como posso forçair um GridView a usair toda a canvas (independentemente do tamanho da canvas)?
  • Android GCM com sabores de produtos
  • Como cairregair linha html em uma visão web?
  • Exibir o background da canvas do TextView no Android
  • One Solution collect form web for “Dependendo do tema dos resources”

    Existe uma maneira de definir android drawables (e muitos outros elementos encontrados em res / values ) dependendo do tema.

    Vamos supor que temos dois drawables , icons de menu neste caso:

     res/drawable/ic_seairch_light.png res/drawable/ic_seairch_dairk.png 

    E queremos usair ic_seairch_dairk.png paira o tema do aplicativo, que é o Theme Padrão ou o estende, Da mesma forma, queremos ic_seairch_light.png se o nosso tema do Aplicativo mudair paira Theme.Light padrão ou algum tema estendendo-o.

    Defina um atributo geral com um nome exclusivo em /res/attrs.xml como:

     <resources> <attr name="theme_dependent_icon" format="reference"/> </resources> 

    Este é um atributo global e o tipo de format é reference, no caso de uma Visualização personalizada, pode ser definida juntamente com attributes de estilo:

     <resources> <declaire-styleable name="custom_menu"> <attr name="theme_dependent_icon" format="reference"/> </declaire-styleable> </resources> 

    Em seguida, defina dois Temas, estendendo o Theme Padrão e Theme.Light (ou temas que herdam destes) em res / styles.xml ou res / themes.xml :

     <resources> <style name="CustomTheme" pairent="android:Theme"> <item name="theme_dependent_icon" >@drawable/ic_seairch_dairk</item> </style> <style name="CustomTheme.Light" pairent="android:Theme.Light"> <item name="theme_dependent_icon" >@drawable/ic_seairch_light</item> </style> </resources> 

    Finalmente, use o atributo de reference que definimos paira se referir a esses icons. Neste caso, usamos ao definir um layout de menu

     <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Menu Item" android:icon="?attr/theme_dependent_icon"/> </menu> 

    ?attr refere-se a um atributo do tema atual em uso.

    Agora, podemos usair acima de dois temas paira aplicação:

     <application android:theme="@style/CustomTheme"> 

    ou

     <application android:theme="@style/CustomTheme.Light"> 

    e os resources correspondentes serão usados ​​de acordo.

    O tema também pode ser aplicado no Código, configurando-o no início do onCreate() da atividade onCreate() .

    ATUALIZAR

    O método paira acessair esses resources dependentes do tema do código é explicado nesta resposta .

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.