una texto poner palabra letras consola como colores color cambiar java android string textcolor

poner - ¿Es posible cambiar el color del texto en una cadena a varios colores en Java?



como poner color en java netbeans (7)

Html.fromHtml(String) está en desuso en Android N

Para admitir la última versión de Android, algo así

val colorText = ("Some Normal Text/n" + "<font color=/"#FFA500/"><bold> Orange Text </bold></font>" + "More Normal text") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { venueAddressValue.setText(Html.fromHtml(colorText, Html.FROM_HTML_MODE_LEGACY)); } else { venueAddressValue.setText(Html.fromHtml(colorText)); }

Lo que quiero decir es, ¿es posible cambiar el texto "Este texto es azul" al color azul en una sola cadena? Debe haber una forma...

<TextView android:gravity="left" android:padding="3dip" android:text="This text is white. This text is blue." android:textColor="#ffffff" android:textSize="22dp"/>


Creé una clase como esta:

import android.text.SpannableStringBuilder; import android.text.style.CharacterStyle; public class StyleableSpannableStringBuilder extends SpannableStringBuilder { public StyleableSpannableStringBuilder appendWithStyle(CharacterStyle c, CharSequence text) { super.append(text); int startPos = length() - text.length(); setSpan(c, startPos, length(), 0); return this; } public StyleableSpannableStringBuilder appendWithStyle(CharacterStyle [] c, CharSequence text) { super.append(text); int startPos = length() - text.length(); for (CharacterStyle c1 : c) setSpan(c1, startPos, length(), 0); return this; } }

Esto me permite hacer cosas como esta:

private void buildTickerItem(DelayedQuoteServiceObject o) { Double lastPrice = Double.parseDouble(o.getValue("LastPrice")); Double dayChange = Double.parseDouble(o.getValue("DayChange")); Double percentChange = Double.parseDouble(o.getValue("PercentDayChange")) / 100; if (o.isIndex() == true) { tickerTapeData.appendWithStyle(new StyleSpan(Typeface.BOLD),o.getDisplayName()); tickerTapeData.append(" "+ indexFormat.format(lastPrice) + " ("); if (dayChange >= 0) tickerTapeData.appendWithStyle(new ForegroundColorSpan(Colours.getTickerPositive()), indexFormat.format(dayChange)); else tickerTapeData.appendWithStyle(new ForegroundColorSpan(Color.RED), indexFormat.format(dayChange)); } else { tickerTapeData.appendWithStyle(new StyleSpan(Typeface.BOLD), o.ticker); tickerTapeData.append("@"+ dollarFormat.format(lastPrice) + " ("); if (dayChange >= 0) tickerTapeData.appendWithStyle(new ForegroundColorSpan(Colours.getTickerPositive()), dollarFormat.format(dayChange)); else tickerTapeData.appendWithStyle(new ForegroundColorSpan(Color.RED), dollarFormat.format(dayChange)); } tickerTapeData.append("/"); if (dayChange >= 0) tickerTapeData.appendWithStyle(new ForegroundColorSpan(Colours.getTickerPositive()), percentFormat.format(percentChange)); else tickerTapeData.appendWithStyle(new ForegroundColorSpan(Color.RED), percentFormat.format(percentChange)); tickerTapeData.append(") "); }

Para crear una cinta de teletipo Funciona muy bien y mantiene el código limpio.


Estoy en uso para un cambio de estrella si el servicio "Adelante"

String c = "*" + getResources().getString(R.string.rupee) + str_pay_at_store; SpannableString spannable2 = new SpannableString(c); spannable2.setSpan(new ForegroundColorSpan(Color.RED), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv_payatstore.setText(spannable2);

Puedes ver así


Prueba esto..

TextView update= (TextView) dialog.findViewById(R.id.address); String colorText= "Driver is nearby " + "<font color=/"#E72A02/"><bold>" + "43, KR Rd, Tata Silk Farm, Jayanagar" + "</bold></font>" + " and he is " + "<font color=/"#B92000/"><bold>" + "11 km" + "</bold></font>" + " & " + "<font color=/"#B92000/"><bold>" + "20 mins" + "</bold></font>" + " away from your current location."; update.setText(Html.fromHtml(colorText));

Y el resultado será así.


Puedes probar esto: En un fragmento:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate( R.layout.shipment_accepted_fragment, container, false); String email = "([email protected])"; TextView shipment_email = (TextView) rootView .findViewById(R.id.textview); String text_shipment_email = "Hello" + " <font color=''" + getResources().getColor(R.color.green_color) + "''>" + email + "</font>" + "Bye"; shipment_email.setText(Html.fromHtml(text_shipment_email), TextView.BufferType.SPANNABLE); }


Si es posible. Para esto necesitas usar SpannableString y SpannableString .

Esto debería verse más o menos así:

SpannableStringBuilder builder = new SpannableStringBuilder(); String red = "this is red"; SpannableString redSpannable= new SpannableString(red); redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 0, red.length(), 0); builder.append(redSpannable); String white = "this is white"; SpannableString whiteSpannable= new SpannableString(white); whiteSpannable.setSpan(new ForegroundColorSpan(Color.WHITE), 0, white.length(), 0); builder.append(whiteSpannable); String blue = "this is blue"; SpannableString blueSpannable = new SpannableString(blue); blueSpannable.setSpan(new ForegroundColorSpan(Color.BLUE), 0, blue.length(), 0); builder.append(blueSpannable); mTextView.setText(builder, BufferType.SPANNABLE);


Una forma sencilla de hacerlo es usar HTML y establecer el texto en TextView programación.

String text = "This text is white. <font color=/"blue/">This text is blue.</font>"; textView.setText(Html.fromHtml(text), BufferType.SPANNABLE);