Android - 阻止edittext复制/粘贴,然后双击全选

Hun*_*r23 9 android copy-paste gesture android-edittext

我正在寻找一个解决方案来禁用长按编辑菜单(复制/粘贴)以及双击select-all功能的edittext框.我已经在这里以类似的方式阅读了这个问题的一些解决方案,但是,需要更进一步.

对于这个应用程序,我要求阻止用户在我的应用程序上使用复制/粘贴功能,并需要一种方法来禁用此功能,该功能将适用于2.3 API以及在较新的平板电脑上使用时.我正在使用NexusOne手机设备和Galaxy平板电脑进行测试.(minSDK为8,目标为10)

目前我正在使用它(例如):edittextPassword.setLongClickable(false); - 禁用弹出编辑菜单,太棒了!

此方法适用于电话设备,以防止编辑菜单弹出.在平板电脑上,这也是长按动作禁用的.然而,平板电脑具有双击的新功能,可以选择所有文本并打开编辑菜单.有没有办法让较旧的API取消/捕获/禁用较新的API功能或阻止双击手势?


更新:使用连接到GestureDetector的setLongClickable(false)和setOnTouchListener的组合(感谢Nikola的建议)我可以从打开中捕获/取消双击和长按编辑菜单.

接下来要弄清楚的是......在三星手机上(Galaxy S,目前还不确定其他设备),当你点击一个字段时,你会得到一个光标和一个浮动光标指针按钮(正确的名字? ).单击此指针按钮是打开编辑菜单的另一种方法.有谁知道如何禁用这个?我唯一的解决方法是使用TextWatcher清除BeforeTextChanges和AfterTextChanges上的剪贴板.这样可以确保即使您进入"复制/粘贴"菜单,也会清除剪贴板并且无需粘贴任何内容.

CJB*_*JBS 1

关于“浮动光标指针按钮”(称为光标控制器或句柄)以及单击它时出现的上下文菜单,是的,有一种方法可以禁用它。我假设你指的是这个:

带有粘贴菜单的文本选择手柄

除了 setLongClickable(false) 和 setOnTouchListener 代码之外,修复还在于防止 PASTE/REPLACE 菜单出现在show()(未记录的)类的方法中android.widget.Editor。在菜单出现之前,会进行检查if (!canPaste && !canSuggest) return;。用作设置这些变量的基础的两个方法都在该类中EditText

更完整的答案可以在这里找到

正如 @CommonsWare 提到的,各个设备制造商可能已经更改了控件的默认 AOSP 行为EditText,因此测试是必要的。


归档时间:

查看次数:

7054 次

最近记录:

8 年,9 月 前