【发布时间】:2015-03-08 07:55:21
【问题描述】:
我的目标是拥有一个没有花哨功能的EditText,只是用于更轻松地移动光标的文本选择处理程序——因此没有上下文菜单或弹出窗口。
根据this solution,我通过使用 ActionMode 回调事件禁用了文本编辑功能操作栏的外观(复制/粘贴等)。
当字段中存在文本并且在文本中发生单击时,中间的中间文本选择句柄(见下图)仍会出现。伟大的!我想保持这种行为。我不希望在单击文本选择句柄时出现“粘贴”菜单。
我还通过在样式 XML 中设置 android:longClickable="false" 禁用了 EditText 的长按输入。禁用长按可防止在单击并按住鼠标(即长按)时出现“粘贴/替换”菜单,但是当在文本内单击(单击)鼠标时,会出现文本选择句柄,并且当单击文本选择句柄本身,然后出现“粘贴”菜单选项(当剪贴板中有文本时)。这是我试图阻止的。
从源代码中可以看出,ActionPopupWindow 是 PASTE/REPLACE 选项弹出的内容。 ActionPopupWindow是公共类android.widget.Editor内私有抽象类HandleView中的一个受保护变量(mActionPopupWindow)...
没有禁用剪贴板服务或编辑 Android 源代码,有什么方法可以阻止它显示吗?我尝试为android:textSelectHandleWindowStyle 定义一个新样式,并将android:visibility 设置为gone,但它不起作用(应用程序冻结了一段时间,否则它会显示)。
【问题讨论】:
-
@MarcinOrlowski 有商业原因——我不能在这里讨论——为什么需要这样做。这不适用于“应用商店”上的应用。
-
@BhavinChauhan - 感谢您的链接,但所有答案都有各种禁用长按、禁用操作工具栏的复制/粘贴(我已经完成)或更改文本剪贴板。
-
您好,除了自定义编辑文本之外,找到任何解决方案了吗?同样的场景,我想动态使用它。有什么建议吗?
标签: android android-edittext android-widget contextmenu