📌  相关文章
📜  如何在 Android 的 EditText 中禁用复制功能?

📅  最后修改于: 2022-05-13 01:55:06.172000             🧑  作者: Mango

如何在 Android 的 EditText 中禁用复制功能?

在 Android 中,EditText 用于让用户输入可以是数字、字符、字符串或段落的文本。可以从 EditText 获取数据并用于执行所需的操作。由于 EditText 的主要输入是文本,因此可以手动键入或从其他来源复制,然后简单地将其粘贴到其中。同样,EditText 中的文本可以复制并在其他应用程序中使用。

Android中的编辑文本

因此,在本文中,我们将向您展示如何在 Android 中禁用 EditText 中的复制功能。 IDE 准备就绪后,请按照以下步骤操作。

分步实施

第 1 步:在 Android Studio 中创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在Kotlin中演示了该应用程序,因此请确保在创建新项目时选择 Kotlin 作为主要语言。

第 2 步:使用 activity_main.xml 文件

导航到app > res > layout > activity_main.xml并将以下代码添加到该文件。下面是activity_main.xml文件的代码。添加一个 EditText,如下所示。

XML


  
    
  


Kotlin
package org.geeksforgeeks.disablecopypasteet
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ActionMode
import android.view.Menu
import android.view.MenuItem
import android.widget.EditText
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring and initializing
        // the EditText from the layout
        val mEditText = findViewById(R.id.edit_text_1)
  
        // Disable every mode to disable copy
        mEditText.customSelectionActionModeCallback = object : ActionMode.Callback {
            override fun onCreateActionMode(p0: ActionMode?, p1: Menu?): Boolean {
                return false
            }
  
            override fun onPrepareActionMode(p0: ActionMode?, p1: Menu?): Boolean {
                return false
            }
  
            override fun onActionItemClicked(p0: ActionMode?, p1: MenuItem?): Boolean {
                return false
            }
  
            override fun onDestroyActionMode(p0: ActionMode?) {
  
            }
        }
    }
}


第 3 步:使用 MainActivity.kt 文件

转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。

科特林

package org.geeksforgeeks.disablecopypasteet
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ActionMode
import android.view.Menu
import android.view.MenuItem
import android.widget.EditText
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring and initializing
        // the EditText from the layout
        val mEditText = findViewById(R.id.edit_text_1)
  
        // Disable every mode to disable copy
        mEditText.customSelectionActionModeCallback = object : ActionMode.Callback {
            override fun onCreateActionMode(p0: ActionMode?, p1: Menu?): Boolean {
                return false
            }
  
            override fun onPrepareActionMode(p0: ActionMode?, p1: Menu?): Boolean {
                return false
            }
  
            override fun onActionItemClicked(p0: ActionMode?, p1: MenuItem?): Boolean {
                return false
            }
  
            override fun onDestroyActionMode(p0: ActionMode?) {
  
            }
        }
    }
}

输出:

您可以看到我们无法选择 EditText 中的文本。这可以防止它被复制。