¿Cómo hacer que TextView y EditText sean seleccionables en Android?

En este artículo, vamos a implementar una función muy importante relacionada con TextView. Mientras usa cualquier aplicación de redes sociales o le gusta usar Facebook, es posible que haya visto que hay un tipo particular de TextView que no puede copiar como un título que las personas escriben en sus publicaciones. Puede seleccionar el mensaje, pero hay pocos textos que no se pueden seleccionar o copiar. Así que aquí vamos a aprender cómo implementar esa característica.

Implementando esta característica para TextView 

Método 1 

Paso 1: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo  activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".SelectText">
  
    <TextView
        android:id="@+id/select"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Geeks For Geeks "
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textSize="30dp" />
     
</LinearLayout>

Paso 2: trabajar con el archivo MainActivity.java

Esto es algo que permite que nuestro texto sea seleccionado y luego podemos copiar ese texto

select.setTextIsSelectable(true);

Esto deshabilita nuestro texto para ser seleccionado o incluso por defecto se establece como falso. Por lo tanto, no puede seleccionar un texto en el modo predeterminado

select.setTextIsSelectable(false);

Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java

Java

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
  
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
  
import org.w3c.dom.Text;
  
public class SelectText extends AppCompatActivity {
    
    TextView select;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_select_text);
          
        select = findViewById(R.id.select);
        select.setTextIsSelectable(true);
    }
}

Método 2

Realice cambios en el archivo XML. Agregue esta línea en su TextView.

android:textIsSelectable="true"

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".SelectText">
  
    <TextView
        android:id="@+id/select"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textIsSelectable="true"
        android:text="Geeks For Geeks "
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textSize="30dp" />
  
</LinearLayout>

Producción:

Implementando esta función para EditText

Paso 1: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml . Crearemos un EditText simple

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".SelectText">
  
    <EditText
        android:id="@+id/selecte"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:cursorVisible="false"
        android:textSize="30dp" />
  
</LinearLayout>

Paso 2: trabajar con el archivo MainActivity.java

Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . En EditText Por defecto, podemos seleccionar texto. Aquí, en primer lugar, ocultaremos el cursor en el archivo layout.xml 

android:cursorVisible="false"

Y agregó un detector de eventos para hacer clic largo y mostrar el cursor solo cuando comienza una selección.

selecte.setCursorVisible(true);

Java

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
  
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
  
import org.w3c.dom.Text;
  
public class SelectText extends AppCompatActivity {
    
    EditText selecte;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_select_text);
        
        selecte = findViewById(R.id.selecte);
  
        selecte.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
               selecte.setCursorVisible(true);
               Toast.makeText(SelectText.this,"Visible",Toast.LENGTH_LONG).show();
               return false;
            }
        });
    }
}

Producción:

Publicación traducida automáticamente

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