¿Cómo cambiar el color del texto de una substring en Android usando la clase SpannableString?

En este artículo, aprenderemos cómo cambiar el color del texto de una substring de una string. Es fácil cambiar el color de toda la string, pero para cambiar el color de una substring, debemos usar una clase especial SpannableString . Pero la clase SpannableString no es realmente útil cuando se trata de cambiar el color de fondo del texto. Entonces, para eso, tenemos que usar la clase SpannableStringBuilder .

Acercarse:

  1. Agregue el siguiente código en el archivo activity_main.xml. Esto agregará dos vistas de texto en el diseño de actividad_principal.

    actividad_principal.xml

          
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center"
        tools:context=".MainActivity">
      
        <TextView
            android:id="@+id/text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:textAlignment="center"
            android:text="GeeksForGeeks A 
                    Computer Science Portal for Geeks"
            android:textSize="20sp"
            />
        <TextView
            android:id="@+id/text_view2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:textAlignment="center"
            android:text="Learn Algorithm."
            android:textSize="20sp"
            />
    </LinearLayout>
  2. Ahora agregue el siguiente código en el archivo MainActivity.java . En este código, cambiaremos el color de las substrings de la primera vista de texto con la clase SpannableString y agregaremos un color de fondo en la segunda vista de texto con SpannableStringBuilder . Cree los objetos de las clases con los textos que desea mostrar y use la función setSpan para cambiar el color de la substring.

    MainActivity.java

    package org.geeksforgeeks.gfgspannablestring;
      
    import android.graphics.Color;
    import android.os.Bundle;
    import android.text.SpannableString;
    import android.text.SpannableStringBuilder;
    import android.text.Spanned;
    import android.text.style.BackgroundColorSpan;
    import android.text.style.ForegroundColorSpan;
    import android.widget.TextView;
    import androidx.appcompat.app.AppCompatActivity;
      
    public class MainActivity extends AppCompatActivity {
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            TextView textView = findViewById(R.id.text_view);
            TextView textView2 = findViewById(R.id.text_view2);
      
            String text = "GeeksForGeeks A Computer 
                           Science Portal for Geeks";
            String text2 = "Learn Algorithm.";
      
            SpannableString spannableString = new SpannableString(text);
      
            // we can only use backgroundcolor
            // span with a spannableStringBuilder.
            SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(text2);
      
            // It is used to set foreground color.
            ForegroundColorSpan green = new ForegroundColorSpan(Color.GREEN);
            ForegroundColorSpan cyan = new ForegroundColorSpan(Color.CYAN);
      
            // It is used to set background color.
            BackgroundColorSpan yellow = new BackgroundColorSpan(Color.YELLOW);
      
            // It is used to set the span to the string
            spannableString.setSpan(green,
                                    0, 13, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            spannableString.setSpan(cyan,
                                    40, 43, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      
            spannableStringBuilder.setSpan(yellow,
                                           0, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      
            textView.setText(spannableString);
            textView2.setText(spannableStringBuilder);
        }
    }

Producción:

Publicación traducida automáticamente

Artículo escrito por madhavmaheshwarimm20 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *