L'icône de la barre de teinture sur Android
J'ai remarqué que l'utilisation de AppCompat thèmes, par défaut, les icônes de la barre d'obtenir teinté par l'attribut colorControlNormal
dans mon style.
<style name="MyTheme" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/yellow</item>
</style>
Comme vous pouvez le voir ci-dessus, cependant, il n'arrive pas avec toutes les icônes. Je fournis le "plus" de signer, de qui j'ai reçu de l'officiel des icônes, et il ne reçoit pas de dominante de couleur (j'ai utilisé le "blanc" version du format png). De ce que j'ai compris de cette question, système de teintes que les icônes avec un canal alpha. Est-ce vrai?
Si oui: Est-il un endroit où je peux trouver de l'alpha-défini, matériel officiel icônes? Si ce n'est - et si la Barre d'outils les icônes doivent être alpha-seulement pour être teinté - comment est Google qui nous attend pour l'utilisation des icônes dans une Barre d'outils?
Quelque part dans le SDK, j'ai trouvé quelques icônes se terminant en _alpha.png
, et ils réellement obtenir teinté bien. Cependant j'ai besoin d'un ensemble complet de matériel icônes, et d'après les sources officielles seulement je pouvais trouver white
, grey600
et black
ceux.
L'application d'un ColorFilter
au moment de l'exécution serait légèrement douloureux, et ma réelle de la Barre d'outils avec des icônes teinté, d'autres pas - semble tout à fait mauvais.
- AppCompat seulement les teintes de ses propres icônes. Pour l'instant, vous devrez manuellement teinte toutes les icônes que vous êtes de fournir séparément des AppCompat.
- Aussi, liés question ne s'applique qu'aux notifications, pas général de teinture.
- Voir aussi ce StackO Post pour une explication détaillée.
- On dirait que je devrait avoir cherché un peu plus longtemps. Je serai heureux d'accepter votre réponse @alanv , ou de laisser le drapeau de la présente comme un double. Par curiosité, tu dis "pour l'instant" parce que vous savez sur un correctif à venir, ou vous imaginez donc?
- C'est quelque chose que nous aimerions faire, mais je ne peux pas faire de promesses.
Vous devez vous connecter pour publier un commentaire.
Une autre option est d'utiliser le nouveau support pour vecteur un drawable dans la bibliothèque de prise en charge.
Voir
res/xml/ic_search.xml
dans blog AppCompat — l'Âge des vecteursAvis la référence à
?attr/colorControlNormal
?attr/colorControlNormal
àandroid:tint
vsandroid:fillColor
attributs? Merci!Voici la solution que j'utilise. Appel tintAllIcons après onPrepareOptionsMenu ou l'emplacement équivalent. La raison pour muter() si vous arrive d'utiliser les icônes dans plus d'un endroit; sans la transformer, ils vont tous être sur la même teinte.
Ce ne sera pas prendre soin de la zone de débordement, mais pour cela, vous pouvez faire ceci:
Mise en page:
Styles:
Cela fonctionne de la manière de appcompat v23.1.0.
J'ai effectivement pu le faire sur les API 10 (pain d'épice) et ça a très bien fonctionné.
Modifier: Il a travaillé sur l'API 22 aussi...
Voici le résultat final.
Remarque: L'icône est un drawable ressource dans le dossier drawable(s).
Maintenant, voici comment il faut faire:
À ce stade, vous pouvez la changer en n'importe quelle couleur que vous voulez!
Je vois cette question est d'obtenir des vues donc je vais poster une réponse pour ceux qui ne lisent pas les commentaires.
Mes conjectures dans la question étaient toutes dans l'erreur et il n'est pas une question de canaux alpha, au moins pas à l'extérieur. Le fait est simplement que, citant @alanv ,
Cela pourrait changer dans l'avenir, mais aussi pourrait pas. De cette réponse vous pouvez également voir la liste des icônes (ils appartiennent tous à l'intérieur dossier de ressources de appcompat, de sorte que vous ne pouvez pas les modifier) qui sont automatiquement teinté et avec une couleur.
Personnellement, j'utilise un
colorControlNormal
qui est noir ou blanc (ou similaire nuances), et importer les icônes avec cette couleur particulière. Icônes de couleur sur un fond coloré look un peu mal. Toutefois, une autre solution que j'ai trouvé agréable est cette classe sur github. Appelez simplementMenuColorizer.colorMenu()
lorsque vous créez le menu.C'est la dernière et la vraie réponse
D'abord créer le style de la barre d'outils comme ceci:
Ensuite dans votre application principale ou d'une activité à thème ajoutez cette ligne
Et enfin en vous r'fichier de mise en page ajouter cette ligne dans la barre d'outils
Et vous verrez de vos icônes de la barre de couleur dans votre couleur préférée
Vous pouvez simplement créer une Barre d'outils personnalisée qui utilise votre teinte de couleur lors du gonflage du menu.
Assurez-vous juste que vous appelez dans votre Activité/Fragment de code:
Pas de réflexion, pas de vue de recherche, et pas tellement de code, hein?
Et n'utilisez pas
onCreateOptionsMenu/onOptionsItemSelected
, si vous utilisez cette approchePour sdk 23 ou plus:
Ma barre d'outils
Avec androidX vous pouvez définir votre Barre d'outils, comme ce
Ensuite, étendre une AppCompat thème et définir colorControlNormal de la propriété que vous voulez: