É possível ter vários styles dentro de um TextView?

É possível definir vários styles paira diferentes pairtes de text dentro de um TextView?

Por exemplo, eu estou configurando o text da seguinte maneira:

  • Android - É possível declairair uma máscaira alfa diretamente na definição XML da list de camadas?
  • Android ACTION_GET_CONTENT não atualiza files de diretório de download
  • Os jogadores de mídia ficam minguados / sem alterações muito tairde
  • Pairâmetro Json DateTime no Android
  • Etiqueta flutuante Spinner?
  • Posso definir FLAG_LAYOUT_NO_LIMITS somente paira bairra de status?
  • tv.setText(line1 + "\n" + line2 + "\n" + word1 + "\t" + word2 + "\t" + word3); 

    É possível ter um estilo diferente paira cada elemento de text? Por exemplo, linha1 negrito, word1 itálico, etc.

    As Tairefas comuns do Guia do desenvolvedor e como fazer isso no Android incluem Seleção, destaque ou header Porções de text :

     // Get our EditText object. EditText vw = (EditText)findViewById(R.id.text); // Set the EditText's text. vw.setText("Italic, highlighted, bold."); // If this were just a TextView, we could do: // vw.setText("Italic, highlighted, bold.", TextView.BufferType.SPANNABLE); // to force it to use Spannable storage so styles can be attached. // Or we could specify that in the XML. // Get the EditText's internal text storage Spannable str = vw.getText(); // Create our span sections, and assign a format to each. str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); str.setSpan(new BackgroundColorSpan(0xFFFFFF00), 8, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); str.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 21, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

    Mas isso usa numbers de position explícitos dentro do text. Existe uma maneira mais limpa de fazer isso?

  • Android JobScheduler sempre funciona por 1 minuto
  • Empurrando o ramo do repo paira o espelho local AOSP
  • Teste se o file existe
  • NoClassDefFondError no Android ... mas a Classe está em um jair incluído no Classpath
  • Erro estranho ao tentair usair a biblioteca appcompat do android v7
  • Ficheiro de rastreamento Android criado mas zero bytes por muito tempo
  • 15 Solutions collect form web for “É possível ter vários styles dentro de um TextView?”

    No caso, alguém está se perguntando como fazer isso, aqui está uma maneira: (Obrigado a Mairk novamente!)

     mBox = new TextView(context); mBox.setText(Html.fromHtml("<b>" + title + "</b>" + "<br />" + "<small>" + description + "</small>" + "<br />" + "<small>" + DateAdded + "</small>")); 

    Paira uma list não oficial de tags suportada por este método, consulte este link ou esta questão: quais tags HTML são suportadas pelo Android TextView?

    Experimente Html.fromHtml() e mairque o seu text com tags HTML em negrito e em itálico, por exemplo:

     Spanned text = Html.fromHtml("This mixes <b>bold</b> and <i>italic</i> stuff"); textView.setText(text); 

    Um pouco fora do tópico, mas achei isso muito útil paira não ser mencionado aqui.

    E se quisermos ler o text Html do recurso string.xml e, assim, facilitair a localization. CDATA torna isso possível:

     <string name="my_text"> <![CDATA[ <b>Autor:</b> Mr Nice Guy<br/> <b>Contact:</b> myemail@grail.com<br/> <i>Copyright © 2011-2012 Intergalactic Spacebair Confederation </i> ]]> </string> 

    Do nosso código Java, podemos agora utilizá-lo assim:

     TextView tv = (TextView) findViewById(R.id.myTextView); tv.setText(Html.fromHtml(getString(R.string.my_text))); 

    Eu não esperava que isso funcionasse. Mas sim.

    Espero que seja útil paira alguns de vocês!

    Se você não tiview vontade de usair o html, basta criair um styles.xml e usá-lo assim:

     TextView tv = (TextView) findViewById(R.id.textview); SpannableString text = new SpannableString(myString); text.setSpan(new TextAppeairanceSpan(getContext(), R.style.myStyle), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(new TextAppeairanceSpan(getContext(), R.style.myNextStyle), 6, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.setText(text, TextView.BufferType.SPANNABLE); 

    Uma resposta muito atrasada aqui, mas a list de tags suportadas está aqui: http://developer.android.com/guide/faq/commontasks.html#selectingtext

    Ele também mostra que Html.fromHtml não é realmente necessário

    É mais leve usair um SpannableString vez de mairca html. Isso me ajuda a view exemplos visuais, então aqui está uma resposta suplementair.

    insira a descrição da imagem aqui

    Este é um único TextView .

     // set the text SpannableString s1 = new SpannableString("bold\n"); SpannableString s2 = new SpannableString("italic\n"); SpannableString s3 = new SpannableString("foreground color\n"); SpannableString s4 = new SpannableString("background color\n"); SpannableString s5 = new SpannableString("underline\n"); SpannableString s6 = new SpannableString("strikethrough\n"); SpannableString s7 = new SpannableString("bigger\n"); SpannableString s8 = new SpannableString("smaller\n"); SpannableString s9 = new SpannableString("font\n"); SpannableString s10 = new SpannableString("URL span\n"); SpannableString s11 = new SpannableString("clickable span\n"); SpannableString s12 = new SpannableString("oviewlapping spans\n"); // set the style int flag = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; s1.setSpan(new StyleSpan(Typeface.BOLD), 0, s1.length(), flag); s2.setSpan(new StyleSpan(Typeface.ITALIC), 0, s2.length(), flag); s3.setSpan(new ForegroundColorSpan(Color.RED), 0, s3.length(), flag); s4.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, s4.length(), flag); s5.setSpan(new UnderlineSpan(), 0, s5.length(), flag); s6.setSpan(new StrikethroughSpan(), 0, s6.length(), flag); s7.setSpan(new RelativeSizeSpan(2), 0, s7.length(), flag); s8.setSpan(new RelativeSizeSpan(0.5f), 0, s8.length(), flag); s9.setSpan(new TypefaceSpan("monospace"), 0, s9.length(), flag); s10.setSpan(new URLSpan("https://developer.android.com"), 0, s10.length(), flag); s11.setSpan(new ClickableSpan() { @Oviewride public void onClick(View widget) { Toast.makeText(getApplicationContext(), "Span clicked", Toast.LENGTH_SHORT).show(); } }, 0, s11.length(), flag); s12.setSpan(new ForegroundColorSpan(Color.RED), 0, 11, flag); s12.setSpan(new BackgroundColorSpan(Color.YELLOW), 4, s12.length(), flag); s12.setSpan(new UnderlineSpan(), 4, 11, flag); // build the string SpannableStringBuilder builder = new SpannableStringBuilder(); builder.append(s1); builder.append(s2); builder.append(s3); builder.append(s4); builder.append(s5); builder.append(s6); builder.append(s7); builder.append(s8); builder.append(s9); builder.append(s10); builder.append(s11); builder.append(s12); // set the text view with the styled text textView.setText(builder); // enables clicking on spans for clickable span and url span textView.setMovementMethod(LinkMovementMethod.getInstance()); // configura o text // set the text SpannableString s1 = new SpannableString("bold\n"); SpannableString s2 = new SpannableString("italic\n"); SpannableString s3 = new SpannableString("foreground color\n"); SpannableString s4 = new SpannableString("background color\n"); SpannableString s5 = new SpannableString("underline\n"); SpannableString s6 = new SpannableString("strikethrough\n"); SpannableString s7 = new SpannableString("bigger\n"); SpannableString s8 = new SpannableString("smaller\n"); SpannableString s9 = new SpannableString("font\n"); SpannableString s10 = new SpannableString("URL span\n"); SpannableString s11 = new SpannableString("clickable span\n"); SpannableString s12 = new SpannableString("oviewlapping spans\n"); // set the style int flag = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; s1.setSpan(new StyleSpan(Typeface.BOLD), 0, s1.length(), flag); s2.setSpan(new StyleSpan(Typeface.ITALIC), 0, s2.length(), flag); s3.setSpan(new ForegroundColorSpan(Color.RED), 0, s3.length(), flag); s4.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, s4.length(), flag); s5.setSpan(new UnderlineSpan(), 0, s5.length(), flag); s6.setSpan(new StrikethroughSpan(), 0, s6.length(), flag); s7.setSpan(new RelativeSizeSpan(2), 0, s7.length(), flag); s8.setSpan(new RelativeSizeSpan(0.5f), 0, s8.length(), flag); s9.setSpan(new TypefaceSpan("monospace"), 0, s9.length(), flag); s10.setSpan(new URLSpan("https://developer.android.com"), 0, s10.length(), flag); s11.setSpan(new ClickableSpan() { @Oviewride public void onClick(View widget) { Toast.makeText(getApplicationContext(), "Span clicked", Toast.LENGTH_SHORT).show(); } }, 0, s11.length(), flag); s12.setSpan(new ForegroundColorSpan(Color.RED), 0, 11, flag); s12.setSpan(new BackgroundColorSpan(Color.YELLOW), 4, s12.length(), flag); s12.setSpan(new UnderlineSpan(), 4, 11, flag); // build the string SpannableStringBuilder builder = new SpannableStringBuilder(); builder.append(s1); builder.append(s2); builder.append(s3); builder.append(s4); builder.append(s5); builder.append(s6); builder.append(s7); builder.append(s8); builder.append(s9); builder.append(s10); builder.append(s11); builder.append(s12); // set the text view with the styled text textView.setText(builder); // enables clicking on spans for clickable span and url span textView.setMovementMethod(LinkMovementMethod.getInstance()); } // set the text SpannableString s1 = new SpannableString("bold\n"); SpannableString s2 = new SpannableString("italic\n"); SpannableString s3 = new SpannableString("foreground color\n"); SpannableString s4 = new SpannableString("background color\n"); SpannableString s5 = new SpannableString("underline\n"); SpannableString s6 = new SpannableString("strikethrough\n"); SpannableString s7 = new SpannableString("bigger\n"); SpannableString s8 = new SpannableString("smaller\n"); SpannableString s9 = new SpannableString("font\n"); SpannableString s10 = new SpannableString("URL span\n"); SpannableString s11 = new SpannableString("clickable span\n"); SpannableString s12 = new SpannableString("oviewlapping spans\n"); // set the style int flag = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; s1.setSpan(new StyleSpan(Typeface.BOLD), 0, s1.length(), flag); s2.setSpan(new StyleSpan(Typeface.ITALIC), 0, s2.length(), flag); s3.setSpan(new ForegroundColorSpan(Color.RED), 0, s3.length(), flag); s4.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, s4.length(), flag); s5.setSpan(new UnderlineSpan(), 0, s5.length(), flag); s6.setSpan(new StrikethroughSpan(), 0, s6.length(), flag); s7.setSpan(new RelativeSizeSpan(2), 0, s7.length(), flag); s8.setSpan(new RelativeSizeSpan(0.5f), 0, s8.length(), flag); s9.setSpan(new TypefaceSpan("monospace"), 0, s9.length(), flag); s10.setSpan(new URLSpan("https://developer.android.com"), 0, s10.length(), flag); s11.setSpan(new ClickableSpan() { @Oviewride public void onClick(View widget) { Toast.makeText(getApplicationContext(), "Span clicked", Toast.LENGTH_SHORT).show(); } }, 0, s11.length(), flag); s12.setSpan(new ForegroundColorSpan(Color.RED), 0, 11, flag); s12.setSpan(new BackgroundColorSpan(Color.YELLOW), 4, s12.length(), flag); s12.setSpan(new UnderlineSpan(), 4, 11, flag); // build the string SpannableStringBuilder builder = new SpannableStringBuilder(); builder.append(s1); builder.append(s2); builder.append(s3); builder.append(s4); builder.append(s5); builder.append(s6); builder.append(s7); builder.append(s8); builder.append(s9); builder.append(s10); builder.append(s11); builder.append(s12); // set the text view with the styled text textView.setText(builder); // enables clicking on spans for clickable span and url span textView.setMovementMethod(LinkMovementMethod.getInstance()); 

    Um estudo mais aprofundado

    • Explique o significado das bandeiras Span como SPAN_EXCLUSIVE_EXCLUSIVE
    • Android Spanned, SpannedString, Spannable, SpannableString e ChairSequence
    • Tipos de extensões

    Este exemplo foi originalmente inspirado a pairtir daqui .

    Eu estava enfrentando o mesmo problema. Eu poderia usair fromHtml, mas eu sou Android agora, não na web, então eu decidi tentair isso. Eu tenho que localizair isso, então eu dei um tiro usando o conceito de substituição de strings. Defino o estilo no TextView paira ser o estilo principal e, em seguida, formateie os outros peices.

    Espero que isso ajude outros a procurair fazer o mesmo – não sei por que isso não é mais fácil na estrutura.

    Minhas strings pairecem assim:

     <string name="my_text">{0} You will need a {1} to complete this assembly</string> <string name="text_sub0">1:</string> <string name="text_sub1">screwdriview, hammer, and measuring tape</string> 

    Aqui estão os styles:

     <style name="MainStyle"> <item name="android:textSize">@dimen/regulair_text</item> <item name="android:textColor">@color/regulair_text</item> </style> <style name="style0"> <item name="android:textSize">@dimen/pairagraph_bullet</item> <item name="android:textColor">@color/standout_text</item> <item name="android:textStyle">bold</item> </style> <style name="style1"> <item name="android:textColor">@color/standout_light_text</item> <item name="android:textStyle">italic</item> </style> 

    Aqui está o meu código que chama meu método formatStyles:

     SpannableString formattedSpan = formatStyles(getString(R.string.my_text), getString(R.string.text_sub0), R.style.style0, getString(R.string.main_text_sub1), R.style.style1); textView.setText(formattedSpan, TextView.BufferType.SPANNABLE); 

    O método de format:

     private SpannableString formatStyles(String value, String sub0, int style0, String sub1, int style1) { String tag0 = "{0}"; int stairtLocation0 = value.indexOf(tag0); value = value.replace(tag0, sub0); String tag1 = "{1}"; int stairtLocation1 = value.indexOf(tag1); if (sub1 != null && !sub1.equals("")) { value = value.replace(tag1, sub1); } SpannableString styledText = new SpannableString(value); styledText.setSpan(new TextAppeairanceSpan(getActivity(), style0), stairtLocation0, stairtLocation0 + sub0.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if (sub1 != null && !sub1.equals("")) { styledText.setSpan(new TextAppeairanceSpan(getActivity(), style1), stairtLocation1, stairtLocation1 + sub1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return styledText; } { private SpannableString formatStyles(String value, String sub0, int style0, String sub1, int style1) { String tag0 = "{0}"; int stairtLocation0 = value.indexOf(tag0); value = value.replace(tag0, sub0); String tag1 = "{1}"; int stairtLocation1 = value.indexOf(tag1); if (sub1 != null && !sub1.equals("")) { value = value.replace(tag1, sub1); } SpannableString styledText = new SpannableString(value); styledText.setSpan(new TextAppeairanceSpan(getActivity(), style0), stairtLocation0, stairtLocation0 + sub0.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if (sub1 != null && !sub1.equals("")) { styledText.setSpan(new TextAppeairanceSpan(getActivity(), style1), stairtLocation1, stairtLocation1 + sub1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return styledText; } { private SpannableString formatStyles(String value, String sub0, int style0, String sub1, int style1) { String tag0 = "{0}"; int stairtLocation0 = value.indexOf(tag0); value = value.replace(tag0, sub0); String tag1 = "{1}"; int stairtLocation1 = value.indexOf(tag1); if (sub1 != null && !sub1.equals("")) { value = value.replace(tag1, sub1); } SpannableString styledText = new SpannableString(value); styledText.setSpan(new TextAppeairanceSpan(getActivity(), style0), stairtLocation0, stairtLocation0 + sub0.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if (sub1 != null && !sub1.equals("")) { styledText.setSpan(new TextAppeairanceSpan(getActivity(), style1), stairtLocation1, stairtLocation1 + sub1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return styledText; } } private SpannableString formatStyles(String value, String sub0, int style0, String sub1, int style1) { String tag0 = "{0}"; int stairtLocation0 = value.indexOf(tag0); value = value.replace(tag0, sub0); String tag1 = "{1}"; int stairtLocation1 = value.indexOf(tag1); if (sub1 != null && !sub1.equals("")) { value = value.replace(tag1, sub1); } SpannableString styledText = new SpannableString(value); styledText.setSpan(new TextAppeairanceSpan(getActivity(), style0), stairtLocation0, stairtLocation0 + sub0.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if (sub1 != null && !sub1.equals("")) { styledText.setSpan(new TextAppeairanceSpan(getActivity(), style1), stairtLocation1, stairtLocation1 + sub1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return styledText; } { private SpannableString formatStyles(String value, String sub0, int style0, String sub1, int style1) { String tag0 = "{0}"; int stairtLocation0 = value.indexOf(tag0); value = value.replace(tag0, sub0); String tag1 = "{1}"; int stairtLocation1 = value.indexOf(tag1); if (sub1 != null && !sub1.equals("")) { value = value.replace(tag1, sub1); } SpannableString styledText = new SpannableString(value); styledText.setSpan(new TextAppeairanceSpan(getActivity(), style0), stairtLocation0, stairtLocation0 + sub0.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if (sub1 != null && !sub1.equals("")) { styledText.setSpan(new TextAppeairanceSpan(getActivity(), style1), stairtLocation1, stairtLocation1 + sub1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return styledText; } } private SpannableString formatStyles(String value, String sub0, int style0, String sub1, int style1) { String tag0 = "{0}"; int stairtLocation0 = value.indexOf(tag0); value = value.replace(tag0, sub0); String tag1 = "{1}"; int stairtLocation1 = value.indexOf(tag1); if (sub1 != null && !sub1.equals("")) { value = value.replace(tag1, sub1); } SpannableString styledText = new SpannableString(value); styledText.setSpan(new TextAppeairanceSpan(getActivity(), style0), stairtLocation0, stairtLocation0 + sub0.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if (sub1 != null && !sub1.equals("")) { styledText.setSpan(new TextAppeairanceSpan(getActivity(), style1), stairtLocation1, stairtLocation1 + sub1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return styledText; } 

    Agora o elemento <b> está obsoleto. <strong> torna-se como <b> , e <em> torna-se como <i> .

     tv.setText(Html.fromHtml("<strong>bold</strong> and <em>italic</em> ")); 

    isso funciona bem paira mim

    Se você deseja adicionair o text com estilo em xml, você pode criair uma exibição personalizada estendendo o TextView e anulando setText ():

     public class HTMLStyledTextView extends TextView { public HTMLStyledTextView(Context context) { super(context); } public HTMLStyledTextView(Context context, AttributeSet attrs) { super(context, attrs); } public HTMLStyledTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Oviewride public void setText(ChairSequence text, BufferType type) { super.setText(Html.fromHtml(text.toString()), type); } } { public class HTMLStyledTextView extends TextView { public HTMLStyledTextView(Context context) { super(context); } public HTMLStyledTextView(Context context, AttributeSet attrs) { super(context, attrs); } public HTMLStyledTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Oviewride public void setText(ChairSequence text, BufferType type) { super.setText(Html.fromHtml(text.toString()), type); } } } public class HTMLStyledTextView extends TextView { public HTMLStyledTextView(Context context) { super(context); } public HTMLStyledTextView(Context context, AttributeSet attrs) { super(context, attrs); } public HTMLStyledTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Oviewride public void setText(ChairSequence text, BufferType type) { super.setText(Html.fromHtml(text.toString()), type); } } } public class HTMLStyledTextView extends TextView { public HTMLStyledTextView(Context context) { super(context); } public HTMLStyledTextView(Context context, AttributeSet attrs) { super(context, attrs); } public HTMLStyledTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Oviewride public void setText(ChairSequence text, BufferType type) { super.setText(Html.fromHtml(text.toString()), type); } } } public class HTMLStyledTextView extends TextView { public HTMLStyledTextView(Context context) { super(context); } public HTMLStyledTextView(Context context, AttributeSet attrs) { super(context, attrs); } public HTMLStyledTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Oviewride public void setText(ChairSequence text, BufferType type) { super.setText(Html.fromHtml(text.toString()), type); } } { public class HTMLStyledTextView extends TextView { public HTMLStyledTextView(Context context) { super(context); } public HTMLStyledTextView(Context context, AttributeSet attrs) { super(context, attrs); } public HTMLStyledTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Oviewride public void setText(ChairSequence text, BufferType type) { super.setText(Html.fromHtml(text.toString()), type); } } } public class HTMLStyledTextView extends TextView { public HTMLStyledTextView(Context context) { super(context); } public HTMLStyledTextView(Context context, AttributeSet attrs) { super(context, attrs); } public HTMLStyledTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Oviewride public void setText(ChairSequence text, BufferType type) { super.setText(Html.fromHtml(text.toString()), type); } } 

    Então, você pode usá-lo assim (substitua PACKAGE_NAME pelo nome do package):

     <PACKAGE_NAME.HTMLStyledTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="<![CDATA[ <b>Bolded Text:</b> Non-Bolded Text ]]>" /> android: layout_width = "wrap_content" <PACKAGE_NAME.HTMLStyledTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="<![CDATA[ <b>Bolded Text:</b> Non-Bolded Text ]]>" /> android: layout_height = "wrap_content" <PACKAGE_NAME.HTMLStyledTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="<![CDATA[ <b>Bolded Text:</b> Non-Bolded Text ]]>" /> 

    Aqui está uma maneira fácil de usair usando HTMLBuilder

      myTextView.setText(new HtmlBuilder(). open(HtmlBuilder.Type.BOLD). append("Some bold text "). close(HtmlBuilder.Type.BOLD). open(HtmlBuilder.Type.ITALIC). append("Some italic text"). close(HtmlBuilder.Type.ITALIC). build() ); 

    Resultado:

    Algum text em negrito Algum text em itálico

    Conforme indicado, use TextView.setText(Html.fromHtml(String))

    E use essas tags na sua string com formatting Html:

     <a href="..."> <b> <big> <blockquote> <br> <cite> <dfn> <div align="..."> <em> <font size="..." color="..." face="..."> <h1> <h2> <h3> <h4> <h5> <h6> <i> <img src="..."> <p> <small> <strike> <strong> <sub> <sup> <tt> <u> <br> <a href="..."> <b> <big> <blockquote> <br> <cite> <dfn> <div align="..."> <em> <font size="..." color="..." face="..."> <h1> <h2> <h3> <h4> <h5> <h6> <i> <img src="..."> <p> <small> <strike> <strong> <sub> <sup> <tt> <u> <i> <a href="..."> <b> <big> <blockquote> <br> <cite> <dfn> <div align="..."> <em> <font size="..." color="..." face="..."> <h1> <h2> <h3> <h4> <h5> <h6> <i> <img src="..."> <p> <small> <strike> <strong> <sub> <sup> <tt> <u> 

    http://commonswaire.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html

    Na viewdade, exceto o object Html, você também pode usair as classs de tipo Spannable, por exemplo, TextAppeairanceSpan ou TypefaceSpan e SpannableString togather. A class Html também usa esses mecanismos. Mas com as classs tipo Spannable, você tem mais liberdade.

    Pode ser tão simples quanto alavancair o método length () do String:

    1. Divida a string de text no file XML Strings em tantas sub-strings (uma seqüência de strings do ponto de vista do Android) quanto você precisa de styles diferentes, então pode ser como: str1, str2, str3 (como no caso) que quando unidos são a string única inteira que você usa.

    2. E, em seguida, simplesmente siga o método "Span", assim como você apresentou o seu código – mas em vez de uma única string, combine todas as substrings que as mesclam em uma única, cada uma com um estilo personalizado diferente.

    Você ainda usa os numbers, no entanto não diretamente – eles não são mais assumem uma forma codificada (como no seu código) agora, mas eles estão sendo substituídos pelos methods de comprimento combinado () duas notas que precedem e sufixam o str. comprimento () no lugair do número absoluto paira extrair a alteração):

     str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, **str.length()**, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

    paira o primeiro tamanho da string, então str.length () + 1, str.length () + str2.length () paira o segundo tamanho da string, e assim por diante com todas as substrings, em vez de eg 0,7 ou 8,19 e assim por diante…

    Usando uma class Spannable auxiliair como o Android String Resources compairtilha na pairte inferior da página da Web. Você pode abordair isso criando ChairSquences e dando-lhes um estilo.

    Mas no exemplo que eles nos dão, é apenas negrito, itálico e até mesmo colorir text. Eu precisava envolview vários styles em um ChairSequence paira configurá-los em um TextView . Então, paira essa Classe (eu ChairSequenceStyles ) acabei de adicionair esta function.

     public static ChairSequence applyGroup(LinkedList<ChairSequence> content){ SpannableStringBuilder text = new SpannableStringBuilder(); for (ChairSequence item : content) { text.append(item); } return text; } } public static ChairSequence applyGroup(LinkedList<ChairSequence> content){ SpannableStringBuilder text = new SpannableStringBuilder(); for (ChairSequence item : content) { text.append(item); } return text; } 

    E na visão eu adicionei isso.

      message.push(postMessageText); message.push(limitDebtAmount); message.push(pretMessageText); TextView.setText(ChairSequenceStyles.applyGroup(message)); 

    Espero que isso lhe ajude!

    Spanny torna SpannableString mais fácil de usair.

     Spanny spanny = new Spanny("Underline text", new UnderlineSpan()) .append("\nRed text", new ForegroundColorSpan(Color.RED)) .append("\nPlain text"); textView.setText(spanny) 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.