Actionbar compter de la notification de l'icône (badge) à l'instar de Google a
Est-il un android standard de badge ou de la méthode de l'action de la barre de notification icône avec un compte comme sur Google des exemples?
Si non, alors quelle est la meilleure façon de faire?
Je suis nouveau sur android, s'il vous plaît aider.
- J'ai mis à jour ma réponse pour le lien complet de l'icône de notification de mise en œuvre.
InformationsquelleAutor AndrewS | 2013-07-17
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si c'est la meilleure solution ou pas, mais c'est ce dont j'ai besoin.
Veuillez me dire si vous savez ce qui est nécessaire pour être modifié pour une meilleure performance ou de qualité. Dans mon cas, j'ai un bouton.
Élément personnalisé sur mon menu main.xml
Forme personnalisée drawable (carré à fond) - shape_notification.xml
Mise en page de mon point de vue - feed_update_count.xml
MainActivity établissement et la mise à jour de mon point de vue
MenuItem item = menu.findItem(R.id.badge); MenuItemCompat.setActionView(item, R.layout.feed_update_count); notifCount = (Button) MenuItemCompat.getActionView(item);
android:icon="..."
dans l'élément de menu XML. Leandroid:actionLayout="..."
est assez, là. Pour leButton
dans la mise en page XML, vous peut d'utiliser l'auto-balise de fermeture<Button ... />
parce que la marque ne peut pas avoir de contenu. Vous devez fermer la<shape>
tag (encore une fois: fermer d'eux-mêmes). Et vous n'avez pas besoin de lainvalidateOptionsMenu()
. Pour moi, qui n'a même pas de travail, que le badge est toujours gonflés à partir de XML à nouveau. Donc, l'ensemblesetNotifCount(...)
est inutile. Appelez simplementsetText(...)
sur le badge. Et vous pouvez lancergetActionView()
àButton
directement.Modifier Depuis la version 26 de la bibliothèque de prise en charge (ou androidx) vous n'avez plus besoin de mettre en œuvre une coutume
OnLongClickListener
pour afficher l'info-bulle. Appelez simplement ceci:Je vais partager mon code au cas où quelqu'un veut quelque chose comme ceci:
layout/menu/menu_actionbar.xml
layout/action_bar_notifitcation_icon.xml
Note style et android:cliquables propriétés. ces faire la mise en page de la taille d'un bouton et de rendre l'arrière-plan gris quand on le touche.
drawable-xhdpi/ic_bell.png
Un de 64x64 pixels de l'image avec 10 pixel de large, les rembourrages de tous les côtés. Vous êtes censé avoir 8 pixels de large paddings, mais je trouve que la plupart des éléments par défaut étant légèrement plus petite. Bien sûr, vous aurez envie d'utiliser des tailles différentes pour différentes densités.
drawable/rounded_square.xml
Ici, #ff222222 (couleur #222222 avec alpha #ff (bien visible)) est la couleur de fond de ma Barre d'Action.
com/ubergeek42/WeechatAndroid/WeechatActivity.java
Ici, nous rendre cliquable et pouvant être mis à jour! J'ai créé un résumé auditeur qui fournit Toast création sur onLongClick, le code a été prise à partir de les sources de ActionBarSherlock.
app:actionLayout="@layout/action_bar_notifitcation_icon"
au lieu deandroid:actionLayout="@layout/action_bar_notifitcation_icon"
si vous avez à utiliserMenuItemCompat.getActionView
au lieu demenu.findItem(R.id.menu_hotlist).getActionView();
pour les problèmes de compatibilité.MenuItem.getActionView
n'est pas compatible avec l'API de niveau < 11.android:actionLayout
; AppCompat:app:actionLayout
dans votre élément de menu.app:actionLayout="@layout/notification_icon_layout"
mais alors l'icône cesse de détection du toucher. Voici mon xml pastebin.com/UFwNdWFrJuste à ajouter. Si quelqu'un veut mettre en œuvre un cercle rempli de bulles, voici le code (nom, il
bage_circle.xml
):Vous pourriez avoir à ajuster l'épaisseur en fonction de votre besoin.
EDIT:
Voici la mise en page de bouton (nom, il
badge_layout.xml
):Dans le Menu créer un élément:
Dans
onCreateOptionsMenu
obtenir une référence à l'élément de Menu:Après la réception de la notification pour les messages, définissez le comte:
Ce code utilise Iconifie-fontawesome.
oval
en place dering
il bon à la recherche de mon point de vue.itemMessagesBadgeTextView = (TextView) badgeLayout.findViewById(R.id.badge_textView);
Je n'aime pas
ActionView
solutionsmon idée est la suivante:
TextView
, queTextView
sera remplie parapplication
lorsque vous avez besoin de tirer un
MenuItem
:2.1. gonfler disposition
2.2. appel
measure()
&layout()
(sinonview
sera 0px x 0px, c'est trop petit pour la plupart des cas d'utilisation)2.3. définir la
TextView
texte de2.4. faire "capture d'écran" de la vue
2.6. ensemble
MenuItem
s'icône bitmap créé sur 2,4profit!
donc, le résultat doit être quelque chose comme
voici un exemple simple
@drawable/unread_background
est que le vertTextView
s'arrière-plan,@drawable/ic_menu_gallery
n'est pas vraiment nécessaire ici, c'est juste pour mise en page aperçu du résultat dans l'IDE.ajouter du code dans
onCreateOptionsMenu
/onPrepareOptionsMenu
Mettre en œuvre l'accumulation de l'icône de la méthode:
Le code complet est ici: https://github.com/cvoronin/ActionBarMenuItemCounter
Ok, pour @AndrewS solution pour travailler avec v7 appCompat bibliothèque:
.
Le reste du code est le même.
android:actionLayout
àapp:actionLayout
il workes comme un charme.Essayer de regarder les réponses à ces questions, en particulier le second qui a un exemple de code:
Comment mettre en œuvre des valeurs dynamiques sur l'élément de menu dans Android
Comment obtenir un texte sur une ActionBar Icône?
De ce que je vois, Vous aurez besoin pour créer votre propre personnalisé
ActionView
mise en œuvre. Une alternative pourrait être une coutumeDrawable
. Note qu'il semble y avoir aucun natif de la mise en œuvre d'une notification à compter de la Barre d'Action.EDIT: La réponse que vous recherchez, avec le code: Personnalisée D'Affichage D'Une Notification avec exemple de mise en œuvre
Drawable
s comme on le voit dans les liens suivants: stackoverflow.com/questions/6691818/... et stackoverflow.com/questions/3972445/...Drawable
grâce à quelque chose comme le lien ici et ensuite faire un attribut personnaliséDrawable
qui a du texte sur elle de sorte que vous pouvez créer le tout dans le XML et l'adapter comme vous le souhaitiez. Alternativement, vous pouvez ajouter le Drawable en Java si c'est trop dur.Lorsque vous utilisez la barre d'outils:
et dans votre charger des données d'appel refreshMenu():
J'ai trouvé une très bonne solution ici, je l'utilise avec kotlin.
Tout d'abord, dans le dossier drawable vous devez créer
item_count.xml
:Dans votre
Activity_Main
Disposition de certains l'aiment:Et vous pouvez le modifier comme:
J'ai trouvé une meilleure façon de le faire.
si vous voulez utiliser quelque chose comme ceci
Utiliser cette dépendance
créer un fichier xml dans drawable et l'Enregistrer en tant que Badge.xml
Maintenant où vous souhaitez utiliser le badge utilisez le code suivant dans le xml.
avec l'aide de cela, vous serez en mesure de voir le badge sur le coin en haut à droite de votre image ou quoi que ce soit.
Maintenant, enfin, sur yourFile.java utilisez ce 2 simple chose..
1) Définir
2) où votre boucle ou quoi que ce soit qui est à compter de ce numéro:
ici,
mBadge.setNumber(0)
ne sera pas montrer quoi que ce soit.Espérons que cette aide.