需要为EditText长触摸而不是ActionMode自定义弹出窗口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要为EditText长触摸而不是ActionMode自定义弹出窗口相关的知识,希望对你有一定的参考价值。
对于EditText长按,我想要一个自定义操作栏。除了出现在屏幕顶部的操作栏,我需要控制它的位置。我还想添加一些自定义按钮(但这可能是简单的部分)。
是的,我意识到我违反了android指南。
创建弹出窗口并定位它很容易。困难的部分是保留EditText的文本选择行为,以便长时间触摸,根据标准行为选择文本。
我尝试了一些实验,所有这些实验都因为某种原因而失败:
- 使用setCustomSelectionActionModeCallback并在其onCreateActionMode()中返回“false”。这可以防止操作栏出现,但也可以防止长时间触摸进行文本选择。
- 继续#1,我尝试了继承EditText并包含我自己的onTouch方法。在onTouch中,我认为可以为ACTION_UP添加一些逻辑。两种变化: 始终从ACTION_UP返回false。 EditText然后永远不会看到ACTION_UP并将每次触摸视为长触摸。因此,没有光标定位。 允许EditText接收ACTION_UP,但在长时间触摸的情况下,发布一个函数来设置选择。这在某些情况下有效,但在其他情况下,它只是将光标设置为单个位置,而不会突出显示选择。换句话说,setSelection()会中断。
我尝试了以上的微小变化。到目前为止没有任何作用。即使某些功能有效,它也可能是一个非常脆弱的解决方案,可能会破坏下一个针对EditText的Android版本。
任何想法都是最受欢迎的!
答案
使用此代码:
/*If your finger is pressed for more than 1 second, activated */
EditText.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//Do whatever you want
return true;
}
});
以上是关于需要为EditText长触摸而不是ActionMode自定义弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章