studio recyclerview parametros linearlayout example ejemplos ejemplo constraint below java android android-layout

java - recyclerview - ¿Cómo colorear parte de TextView en Android?



recyclerview android (4)

Esta pregunta ya tiene una respuesta aquí:

¿Estoy tratando de cambiar el color de ciertas palabras (Resultados de búsqueda) en un TextView ? Intenté usar colores ANSI como este:

text.setText("/u001B31;1m" + "someText");

Pero no funcionó. ¿Cómo logro esto?


Está buscando TextAppearanceSpan y ''SpannableString'' para ser más claro el flujo de trabajo es el siguiente

  1. Cree SpannableString desde su cadena fuente
  2. Cree TextAppearanceSpan y configúrelo mediante una llamada al método setSpan en SpannableString
  3. Llame al método textView.setText con SpannableString como argumento

Sé que llego un poco tarde a la fiesta, pero creo que esto ayudará a los futuros visitantes.

Es posible que desee establecer colores de texto parciales en el diseño XML en lugar de utilizar el código Java, por lo que, en base a las respuestas anteriores de este hilo, he creado una pequeña clase que hace el truco.

1 - Primero vamos a crear nuestro componente

package yourpackagehere.component; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.text.Spannable; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.util.AttributeSet; import yourpackagehere.R; public class FontSpannableTextView extends TextView { public FontSpannableTextView(Context context) { super(context); } public FontSpannableTextView(Context context, AttributeSet attrs) { super(context, attrs); setColorPartialString(context, attrs); } public FontSpannableTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setColorPartialString(context, attrs); } private void setColorPartialString(Context context, AttributeSet attrs) { if (isInEditMode()) { return; } String partialText = null; int partialTextColor = Integer.MIN_VALUE; if (attrs != null) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FontSpannableTextView); for (int i = 0; i < a.getIndexCount(); i++) { int attr = a.getIndex(i); switch (attr) { case R.styleable.FontSpannableTextView_fontspannabletextview_partialText: partialText = a.getString(attr); break; case R.styleable.FontSpannableTextView_fontspannabletextview_partialTextColor: partialTextColor = a.getColor(attr, Color.BLACK); break; } } a.recycle(); } if (partialText != null && partialTextColor != Integer.MIN_VALUE) { String wholeText = getText().toString(); Spannable spannable = new SpannableString(wholeText); spannable.setSpan(new ForegroundColorSpan(partialTextColor), wholeText.indexOf(partialText), wholeText.indexOf(partialText) + partialText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); setText(spannable); } else { Log.e("YOURTAGHERE","You must provide both partialText and partialTextColor values"); } } }

2 - en attrs.xml

<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="FontSpannableTextView"> <attr name="fontspannabletextview_partialText" format="string" /> <attr name="fontspannabletextview_partialTextColor" format="color" /> </declare-styleable> </resources>

3 - Vamos a usarlo en nuestro diseño de prueba.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <yourpackagehere.component.FontSpannableTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/hello_world" <!-- Hello world! --> android:layout_margin="25dp" app:fontspannabletextview_partialText="@string/world" <!-- world! --> app:fontspannabletextview_partialTextColor="@color/tutorial_yellow" android:textSize="40sp" /> </LinearLayout>

Ejemplo:


También puedes usar HTML como en el siguiente ejemplo:

string = "<font color=''#FFFFFF''>This is my text </font>" + "<font color=''#000000''> Another text </font>"; textView.setText(Html.fromHtml(string));

Sin usar variable adicional (solución de una línea):

textView.setText(Html.fromHtml("<font color=''#FFFFFF''>This is my text </font>" + "<font color=''#000000''> Another text </font>"));

Es una solución bastante fácil y comprensible :)


esto te ayudará

Spannable WordtoSpan = new SpannableString("I know just how to whisper"); WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 5, 13, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textview.setText(WordtoSpan);