studio programacion herramientas crear con avanzado aplicaciones android text formatting android-textview

programacion - manual de android en pdf



Establecer el color del lapso de TextView en Android (10)

  1. crear vista de texto en su diseño
  2. pega este código en tu actividad principal

    TextView textview=(TextView)findViewById(R.id.textviewid); Spannable spannable=new SpannableString("Hello my name is sunil"); spannable.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 5, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); textview.setText(spannable); //Note:- the 0,5 is the size of colour which u want to give the strring //0,5 means it give colour to starting from h and ending with space i.e.(hello), if you want to change size and colour u can easily

¿Es posible establecer el color de un lapso de texto en un TextView?

Me gustaría hacer algo similar a la aplicación de Twitter, en la que una parte del texto es azul. Ver imagen a continuación:


Aquí hay una pequeña función de ayuda. ¡Ideal para cuando tienes múltiples idiomas!

private void setColor(TextView view, String fulltext, String subtext, int color) { view.setText(fulltext, TextView.BufferType.SPANNABLE); Spannable str = (Spannable) view.getText(); int i = fulltext.indexOf(subtext); str.setSpan(new ForegroundColorSpan(color), i, i + subtext.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); }


Establezca el texto de su texto de texto divisible y defina un ForegroundColorSpan para su texto.

TextView textView = (TextView)findViewById(R.id.mytextview01); Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers"); wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(wordtoSpan);


Hay una fábrica para crear el Spannable, y evitar el reparto, así:

Spannable span = Spannable.Factory.getInstance().newSpannable("text");


Otra forma que podría usarse en algunas situaciones es establecer el color del enlace en las propiedades de la vista que está tomando Spannable.

Si su Spannable se va a usar en un TextView, por ejemplo, puede establecer el color del enlace en el XML de esta manera:

<TextView android:id="@+id/myTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorLink="@color/your_color" </TextView>

También puedes configurarlo en el código con:

TextView tv = (TextView) findViewById(R.id.myTextView); tv.setLinkTextColor(your_color);


Si desea más control, es posible que desee comprobar la clase TextPaint . Aquí es cómo usarlo:

final ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(final View textView) { //Your onClick code here } @Override public void updateDrawState(final TextPaint textPaint) { textPaint.setColor(yourContext.getResources().getColor(R.color.orange)); textPaint.setUnderlineText(true); } };


Siempre encuentro útiles ejemplos visuales cuando intento entender un nuevo concepto.

Color de fondo

SpannableString spannableString = new SpannableString("Hello World!"); BackgroundColorSpan backgroundSpan = new BackgroundColorSpan(Color.YELLOW); spannableString.setSpan(backgroundSpan, 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(spannableString);

Color de primer plano

SpannableString spannableString = new SpannableString("Hello World!"); ForegroundColorSpan foregroundSpan = new ForegroundColorSpan(Color.RED); spannableString.setSpan(foregroundSpan, 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(spannableString);

Combinación

SpannableString spannableString = new SpannableString("Hello World!"); ForegroundColorSpan foregroundSpan = new ForegroundColorSpan(Color.RED); BackgroundColorSpan backgroundSpan = new BackgroundColorSpan(Color.YELLOW); spannableString.setSpan(foregroundSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableString.setSpan(backgroundSpan, 3, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(spannableString);

Estudio adicional

  • Explicar el significado de banderas Span como SPAN_EXCLUSIVE_EXCLUSIVE
  • Android distribuido, SpannedString, Spannable, SpannableString y CharSequence

Establezca Color en texto pasando Cadena y color :

private String getColoredSpanned(String text, String color) { String input = "<font color=" + color + ">" + text + "</font>"; return input; }

Configure el texto en TextView / Button / EditText, etc. llamando al siguiente código:

Vista de texto:

TextView txtView = (TextView)findViewById(R.id.txtView);

Obtener cadena coloreada:

String name = getColoredSpanned("Hiren", "#800000");

Establecer texto en TextView:

txtView.setText(Html.fromHtml(name));

Hecho


Otra respuesta sería muy similar, pero no necesitaría establecer el texto de TextView dos veces

TextView TV = (TextView)findViewById(R.id.mytextview01); Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers"); wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TV.setText(wordtoSpan);


private SpannableString spannableString(SpannableString spannableString, int start, int end) { ColorStateList redColor = new ColorStateList(new int[][]{new int[]{}}, new int[]{0xffa10901}); TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, Typeface.BOLD, -1, redColor, null); spannableString.setSpan(highlightSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableString.setSpan(new BackgroundColorSpan(0xFFFCFF48), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableString.setSpan(new RelativeSizeSpan(1.5f), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return spannableString; } SpannableString spannableString = new SpannableString("I don''t like Hasina."); spannableString(spannableString, 8, 14); textView.setText(spannableString);

Salida: