📜  如何在Android中选择TextView和EditText?

📅  最后修改于: 2021-05-09 18:06:58             🧑  作者: Mango

在本文中,我们将实现与TextView相关的非常重要的功能。在使用任何社交媒体应用程序或像使用Facebook一样,您可能已经看到了某种特定类型的TextView,您无法像人们在其帖子上写的标题一样复制它。您可以选择该消息,但是很少有文本无法选择或复制。因此,在这里我们将学习如何实现该功能。

为TextView实现此功能

方法1

步骤1:使用activity_main.xml文件

导航到应用程序> res>布局> activity_main.xml,然后将以下代码添加到该文件中。以下是activity_main.xml文件的代码。

XML


  
    
     


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);
    }
}


XML


  
    
  


XML


  
    
  


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;
            }
        });
    }
}


步骤2:使用MainActivity。 Java文件

这可以使我们的文本被选中,然后我们可以复制该文本

select.setTextIsSelectable(true);

这将使我们的文本无法被选择,甚至默认情况下将其设置为false。因此,您无法在默认模式下选择文本

select.setTextIsSelectable(false);

转到MainActivity。 Java文件并参考以下代码。下面是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);
    }
}

方法二

在XML文件中进行更改。在您的TextView中添加此行。

android:textIsSelectable="true"

XML格式



  
    
  

输出:

为EditText实现此功能

步骤1:使用activity_main.xml文件

导航到应用程序> res>布局> activity_main.xml,然后将以下代码添加到该文件中。以下是activity_main.xml文件的代码。我们将创建一个简单的EditText

XML格式



  
    
  

步骤2:使用MainActivity。 Java文件

转到MainActivity。 Java文件并参考以下代码。下面是MainActivity的代码。 Java文件。在EditText中默认情况下,我们可以选择文本。首先,我们将光标隐藏在layout.xml文件中

android:cursorVisible="false"

并添加了一个事件监听器以供长按,并且仅在选择开始时才显示光标。

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;
            }
        });
    }
}

输出: