How to disable copy/paste from/to EditText

后端 未结 24 1675
情歌与酒
情歌与酒 2020-11-22 12:18

In my application, there is a registration screen, where i do not want the user to be able to copy/paste text into the EditText field. I have set an onLon

24条回答
  •  一整个雨季
    2020-11-22 12:59

    If you want to disable ActionMode for copy/pasting, you need to override 2 callbacks. This works for both TextView and EditText (or TextInputEditText)

    import android.view.ActionMode
    
    fun TextView.disableCopyPaste() {
      isLongClickable = false
      setTextIsSelectable(false)
      customSelectionActionModeCallback = object : ActionMode.Callback {
        override fun onCreateActionMode(mode: ActionMode?, menu: Menu) = false
        override fun onPrepareActionMode(mode: ActionMode?, menu: Menu) = false
        override fun onActionItemClicked(mode: ActionMode?, item: MenuItem) = false
        override fun onDestroyActionMode(mode: ActionMode?) {}
      }
      //disable action mode when edittext gain focus at first
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        customInsertionActionModeCallback = object : ActionMode.Callback {
          override fun onCreateActionMode(mode: ActionMode?, menu: Menu) = false
          override fun onPrepareActionMode(mode: ActionMode?, menu: Menu) = false
          override fun onActionItemClicked(mode: ActionMode?, item: MenuItem) = false
          override fun onDestroyActionMode(mode: ActionMode?) {}
        }
      }
    }
    

    This extension is based off above @Alexandr solution and worked fine for me.

提交回复
热议问题