Estilo de texto con intervalos en Android

Los intervalos son los objetos de marcado. Estos se pueden usar para diseñar los textos a nivel de carácter o párrafo. Los intervalos se adjuntan a los objetos de texto y nos brindan una variedad de opciones para el texto, que incluyen agregar color al texto, aplicar un comportamiento de clic al texto, escalar el tamaño del texto y dibujar el texto de manera personalizada. Los intervalos también se pueden usar para cambiar las propiedades de TextPaint, dibujar en Canvas e incluso cambiar el diseño del texto. Para usar intervalos, tenemos que usar una de las clases que se enumeran a continuación.

Clase

Texto mutable

Marcado mutable

Estructura de datos

String extendida No No array lineal
String expandible No array lineal
Constructor de strings expandibles Árbol de intervalos

Todas estas clases amplían la interfaz distribuida . SpannableString y SpannableStringBuilder también amplían la interfaz de Spannable . Para usar un intervalo, debemos llamar a setSpan(Object spans, int start, int end, int flag) en el objeto Spanable . El parámetro de intervalo de objeto se refiere al intervalo que se aplicará al texto, el inicio y el final se refieren a los índices de las posiciones del texto sobre las que se aplicarán los intervalos. 

Al aplicar el intervalo, si el texto insertado está dentro de los límites del intervalo, el intervalo expande automáticamente el texto insertado. Y si el texto insertado se encuentra entre los índices de inicio y fin, el parámetro de la bandera decidirá que el intervalo debe incluir o excluir el texto insertado. 

  • Spannable.SPAN_EXCLUSIVE_INCLUSIVE – Incluir texto insertado
  • Spannable.SPAN_EXCLUSIVE_EXCLUSIVE : excluye el texto insertado.

Ejemplo

En este ejemplo, vamos a cambiar el estilo del texto usando la clase SpannableString junto con StyleSpan, UnderlineSpan y StrikethroughSpan. whatTenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Java

Text Styling With Spans In Android Sample Image

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

En el archivo de diseño, tendremos un TextView . Le daremos estilo a este texto usando intervalos. A continuación se muestra el fragmento de código para el archivo activity_main.xml.

XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <!--The text we provide here is only
        for reference purpose we need to
        provide it in MainActivity.java file-->
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="I want Red and Green to be 
                      coloured and this to be Bold,
                      Italic and Underline and Strike-through"
        android:textAlignment="center"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
  
</androidx.constraintlayout.widget.ConstraintLayout>

Paso 3: trabajar con MainActivity.java

En el archivo MainActivity.java , primero definiremos una string que necesita estilo. Una vez que definimos la string, la convertimos en una string expandible, luego definimos todos los intervalos que necesitamos para la modificación y luego establecemos estos intervalos sobre las strings expandibles y finalmente establecemos la string expandible en TextView. A continuación se muestra el código del  archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.UnderlineSpan;
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);
  
        // Referencing the TextView
        TextView textView = (TextView) findViewById(R.id.textView);
          
        // The text that need to be styled using spans
        String text = "I want Red and Green to be colored and these to be Bold, Italic and Underline and Strike-through";
          
        // This will convert the text-string to spannable string
        // and we will used this spannableString to put spans on 
        // them and make the sub-string changes
        SpannableString spannableString = new SpannableString(text);
          
        // Creating the spans to style the string
        ForegroundColorSpan foregroundColorSpanRed = new ForegroundColorSpan(Color.RED);
        ForegroundColorSpan foregroundColorSpanGreen = new ForegroundColorSpan(Color.GREEN);
        StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
        StyleSpan italicSpan = new StyleSpan(Typeface.ITALIC);
        UnderlineSpan underlineSpan = new UnderlineSpan();
        StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
          
        // Setting the spans on spannable string
        spannableString.setSpan(foregroundColorSpanRed, 7, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableString.setSpan(foregroundColorSpanGreen, 15, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableString.setSpan(boldSpan, 51, 55, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableString.setSpan(italicSpan, 57, 63, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableString.setSpan(underlineSpan, 68, 77, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableString.setSpan(strikethroughSpan, 82, 96, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          
        // Setting the spannable string on TextView
        textView.setText(spannableString);
    }
}

Salida: ejecutar en el emulador

Text Styling With Spans In Android Sample Image

Publicación traducida automáticamente

Artículo escrito por ankur035 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 *