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上的剪贴板.这样可以确保即使您进入"复制/粘贴"菜单,也会清除剪贴板并且无需粘贴任何内容.
关于“浮动光标指针按钮”(称为光标控制器或句柄)以及单击它时出现的上下文菜单,是的,有一种方法可以禁用它。我假设你指的是这个:

除了 setLongClickable(false) 和 setOnTouchListener 代码之外,修复还在于防止 PASTE/REPLACE 菜单出现在show()(未记录的)类的方法中android.widget.Editor。在菜单出现之前,会进行检查if (!canPaste && !canSuggest) return;。用作设置这些变量的基础的两个方法都在该类中EditText:
isSuggestionsEnabled()是public,因此可以被覆盖。canPaste()不是,因此必须通过在派生类中引入同名函数来隐藏。更完整的答案可以在这里找到。
正如 @CommonsWare 提到的,各个设备制造商可能已经更改了控件的默认 AOSP 行为EditText,因此测试是必要的。
| 归档时间: |
|
| 查看次数: |
7054 次 |
| 最近记录: |