89 votes

Mettre en surbrillance Couleur du texte avec Html.fromHtml () sous Android?

Je développe une application dans laquelle il y aura un écran de recherche dans lequel l'utilisateur peut rechercher des mots clés spécifiques et ce mot clé doit être mis en évidence. J'ai trouvé la méthode Html.fromHtml.

Mais j'aimerai savoir si c'est la bonne façon de le faire ou non.

S'il vous plaît laissez-moi savoir votre point de vue à ce sujet.

221voto

Christopher Orr Points 58514

Ou beaucoup plus simple que de traiter manuellement avec Spannable s, puisque vous n'avez pas dit que vous voulez que l'arrière-plan soit mis en surbrillance, mais simplement le texte:

 String styledText = "This is <font color='red'>simple</font>.";
textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);
 

43voto

SergeyA Points 291

Utilisation de la valeur de couleur de la ressource xml:

 int сolor = getResources().getColor(R.color.label_color);
String сolorString = String.format("%X", labelColor).substring(2); // !!strip alpha value!!

Html.fromHtml(String.format("<font color=\"#%s\">text</font>", сolorString), TextView.BufferType.SPANNABLE); 
 

13voto

stealthcopter Points 5412

Ceci peut être réalisé à l'aide d'une chaîne spannable. Vous devrez importer les éléments suivants

 import android.text.SpannableString; 
import android.text.style.BackgroundColorSpan; 
import android.text.style.StyleSpan;
 

Et puis vous pouvez changer l’arrière-plan du texte en utilisant quelque chose comme ce qui suit:

 TextView text = (TextView) findViewById(R.id.text_login);
text.setText("");
text.append("Add all your funky text in here");
Spannable sText = (Spannable) text.getText();
sText.setSpan(new BackgroundColorSpan(Color.RED), 1, 4, 0);
 

Où cela mettra en évidence les personnages aux pos 1 - 4 avec une couleur rouge. J'espère que cela t'aides!

5voto

Vidar Vestnes Points 14317

Solution alternative: utiliser plutôt un WebView. Il est facile travailler avec HTML.

 WebView webview = new WebView(this);

String summary = "<html><body>Sorry, <span style=\"background: red;\">Madonna</span> gave no results</body></html>";

webview.loadData(summary, "text/html", "utf-8");
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X