Comment personnaliser le bouton "up" lorsque la recherche est en cours d'expansion?

Contexte

Mon application a la possibilité de rechercher des objets (qui sont d'autres applications) en utilisant SearchView sur ActionBar.

L'application utilise la bibliothèque de support de Google, et ça fonctionne bien sur toutes les versions d'Android depuis API 9.

  • Faire en sorte que TileOverlays soit transparent
  • Comment faire une ondulation circulaire sur un bouton quand on clique?
  • Quel est le moyen le plus efficace pour Android d'appeler des appels HTTP Web API qui renvoient une réponse JSON?
  • Défilement du texte au-dessus des boutons, des boutons fixés au bas
  • Java.net.URLEncoder.encode encode l'espace en tant que + mais j'ai besoin de% 20
  • Conversion de l'application Android sur l'application Java Desktop
  • Le problème

    Sur Lollipop, lorsque je clique sur l'élément d'action de recherche pour commencer la recherche, je remarque que le bouton haut / arrière du coin supérieur gauche devient blanc, ce qui est mauvais pour ce cas car le fond de la barre d'action est également assez blanc:

    Entrez la description de l'image ici

    La chose étrange est que cela ne se produit pas toujours, et je ne pense pas qu'il se produise sur les versions Android qui ne sont pas Lollipop (testé sur plusieurs émulateurs et périphériques).

    Une autre chose étrange est que l'icône du tiroir de navigation semble bien, ainsi que l'icône X dans la recherche.

    Voici le XML de la barre d'outils que j'ai:

    <android.support.v7.widget.Toolbar android:id="@+id/activity_app_list__toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" /> 

    Le "colorPrimary" est défini comme étant: #ffEFEFEF.

    En outre, le parent du thème de l'activité est "Theme.AppCompat.Light.NoActionBar", car j'ai configuré la barre d'outils pour être l'ActionBar.

    La question

    Comment puis-je résoudre ce problème?

    Quelle est la cause de ce problème? Comment ça marche bien sur d'autres versions Android?

  • Taille de texte de l'échelle automatique
  • Où se trouve le lien Eclipse ADT bundle?
  • L'ajout d'une simple ScrollView à Gallery provoque une fuite de mémoire
  • Application de setRotation to Maps API v2
  • Comment construire une impulsion pour Android comme bibliothèque partagée avec support c ++ 11
  • Comment appelons-nous androidTest à un projet Peer Eclipse-Style?
  • 3 Solutions collect form web for “Comment personnaliser le bouton "up" lorsque la recherche est en cours d'expansion?”

    Cela semble être un problème connu: https://code.google.com/p/android/issues/detail?id=78346 .

    La solution de contournement est ici: https://code.google.com/p/android/issues/detail?id=78346#c5 , c'est-à-dire:

    Values-21 / themes.xml:

     <style name="MyTheme" parent="Theme.AppCompat"> <item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item> </style> 

    C'est tout. J'espère qu'il sera réglé plus tard.

    Pour le personnaliser, je suppose que je peux l'utiliser, et aussi choisir la couleur en utilisant "colorControlNormal"

    Je suppose que l'attribut "app: collapseIcon" est ce que vous cherchiez?

     <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="@dimen/toolbarHeight" app:collapseIcon="@drawable/collapseBackIcon" /> 

    Comment puis-je résoudre ce problème?

    J'ai créé une classe d'utilité pour ce (et d'autres) problèmes. Obtenez-le ici:

    https://gist.github.com/consp1racy/96958a1dedf5a99d4ca5

    Partie 1: appelez la méthode suivante dans votre Activity.onCreate(Bundle) :

     ToolbarUtils.fixToolbar(mToolbar); 

    Partie 2: Le code utilise la valeur android:colorControlNormal partir du "thème" de la barre d'outils que vous avez spécifié dans la mise en page. Si vous utilisez la bibliothèque de support et définissez uniquement colorControlNormal vous devez ajouter la ligne suivante après:

     <item name="android:colorControlNormal" tools:ignore="NewApi">?attr/colorControlNormal</item> 

    Quelle est la cause de ce problème?

    Après beaucoup de réflexion et d'expériences, il semble que la flèche utilise le bitmap d'origine, qui est blanc, sans couleur, ce qui est faux.

    Remarque: L'icône de débordement de menu lit également l' android:colorControlNormal alors maintenant il affichera la couleur correcte aussi.

    EDIT: Prérequis:

    Votre Toolbar devrait avoir des attributs similaires à ceux suivants

     <!-- custom toolbar theme --> <item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item> <!-- light popup menu theme, change this if you need to --> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> <!-- app bar background color --> <item name="android:background">@color/material_deep_orange_500</item> 

    Ensuite, le thème de la barre d'outils devrait ressembler à quelque chose comme ça

     <!-- example uses dark app bar template, feel free to change it to light if you need to --> <style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> <!-- this line defines title text color --> <item name="android:textColorPrimary">@color/material_white_100</item> <!-- this line defines subtitle text color --> <item name="android:textColorSecondary">@color/material_white_70</item> <!-- this line defines up/hamburger/overflow icons color --> <item name="colorControlNormal">@color/material_black_54</item> <!-- this line is necessary for proper coloring on lollipop - do not delete it --> <item name="android:colorControlNormal" tools:ignore="NewApi">?attr/colorControlNormal</item> </style> 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.