Style de notification InboxStyle
J'essaie de mettre en œuvre un extensible de notification, et j'ai utilisé le InboxStyle pour que.
Basé sur l'image suivante de la la documentation:
il devrait être possible de définir le style du texte. Dans ce cas, à faire de la "Google Play" en gras.
InboxStyle a seulement addLine()
où je peux passer un CharSequence. J'ai essayé avec Html.fromHtml()
et utilisé certaines de mise en forme html, mais je ne pouvais pas réussir.
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
inboxStyle.setBigContentTitle("title");
inboxStyle.setSummaryText("summarytext");
//fetch push messages
synchronized (mPushMessages) {
HashMap<String, PushMessage> messages = mPushMessages.get(key);
if (messages != null) {
for (Entry<String, PushMessage> msg : messages.entrySet()) {
inboxStyle.addLine(Html.fromHtml("at least <b>one word</b> should be bold!");
}
builder.setStyle(inboxStyle);
builder.setNumber(messages.size());
}
}
Toute idée de ce?
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'utiliser
fromHtml
. J'ai eu des problèmes avecfromHtml
dans le passé (quand ce que vous afficher provient d'un utilisateur, l'injection de code peut entraîner les choses moches). Aussi, je n'aime pas mettre des éléments de mise en forme dansstrings.xml
(si vous utilisez des services de traduction, ils pourraient vis de vos balises HTML).La
addLine
méthode, comme la plupart des méthodes de texte dans les notifications (setTicker
,setContentInfo
,setContentTitle
, etc.) prendre unCharSequence
comme paramètre.De sorte que vous pouvez passer un
Spannable
. Disons que vous voulez "Gras ce et italique que.", vous pouvez formater de cette manière (bien sûr ne pas coder en dur des postes):Maintenant, si vous avez besoin de créer une chaîne de façon dynamique avec les chaînes localisées, comme "aujourd'Hui est [JOUR], bonjour!", mettre de la chaîne avec un espace réservé dans
strings.xml
:Puis le format de cette façon:
Vous obtiendrez "aujourd'Hui est dimanche, bonjour!", et autant que je sache, il fonctionne avec toutes les versions d'Android.
Votre code a fonctionné comme un charme sur mon Samsung S3 avec Android 4.1.1 sur elle. Quelle version d'Android que vous utilisez?
fromHtml()
seulement sur une partie de la chaîne. J'ai utiliséfromHtml("<b>bold</b>") + " some other text"
et le résultat était pas de style. Déplacer le reste de la chaîne dans lefromHtml()
appel fonctionne impeccable! Merci!J'ai fait de la méthode d'assistance à cela:
Utiliser comme ceci:
Ici est la solution la plus simple
Il n'utilise pas
InboxStyle
parce que je n'ai pas besoin dans mon casRésultat
Pour le texte en gras, vous devriez utiliser
<strong>
tag. Il n'y a rien de mal avec votre code. Il suffit de changer<b>
en<strong>
.Edit:
Vous devez modifier votre code pour cela: