2016-06-06 1 views
2

J'ai cherché internet et essayé le code suivant, mais sa ne fonctionne pascomment avoir du texte gras et normal dans le même textview dans android?

SpannableString ss1 = new SpannableString("Health: "); 
      ss1.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), 0, ss1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
      textview1.setText("\n"+ss1+strhealth+"\n\n"); 

je veux sortie soit comme celui-ci Santé: bonne

où strhealth = bon Mais il sort de la santé : bon Quelle est l'erreur?

J'utilise studio Android 2.1.1

Répondre

0

Je pense que vous devriez utiliser 2 différents textView, une étiquette et une pour les données. il est courant et de bonnes pratiques

2

Le plus simple est

textview1.setText(Html.fromHtml("<b>Health:</b> good")); 

L'erreur dans votre code est d'utiliser la concaténation de chaîne ici: "\n"+ss1+strhealth+"\n\n" qui exclut la mise en forme, car les composants sont pris comme des chaînes normales.

+0

J'ai essayé mais ca marche pas –

+0

Fonctionne ici, qu'avez-vous essayé exactement? – Henry

+0

si je ne concaténate pas alors comment puis-je mettre un texte variable et mutiple dans une seule vue de texte –

0

J'utiliser une ressource de chaîne telle que celle-ci:

<string name="health_status"><b>Health:</b> %1$s</string> 

Lorsque vous souhaitez définir l'état de santé il suffit d'utiliser ce code:

String ss1 = getString(R.string.health_status, strhealth); 
+0

Ce n'est pas un travail. – abalta

7
String txt1="Health: "; 
SpannableString txtSpannable= new SpannableString(txt1); 
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD); 
txtSpannable.setSpan(boldSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

builder.append(txtSpannable); 

String txt2="good"; 
builder.append(txt2); 

textview1.lblStatus.setText(builder, TextView.BufferType.SPANNABLE);