gpt4 book ai didi

android - 需要为 EditText 长触而不是 ActionMode 自定义弹出窗口

转载 作者:太空狗 更新时间:2023-10-29 15:04:56 25 4
gpt4 key购买 nike

对于 EditText 长触,我想要一个自定义操作栏。除了不是出现在屏幕顶部的操作栏,我需要控制它的位置。我还想添加一些自定义按钮(但这可能是最简单的部分)。

是的,我意识到我违反了 Android 准则。

创建弹出窗口并定位它很容易。困难的部分是保留 EditText 的文本选择行为,以便在长时间触摸时,根据标准行为选择文本。

我已经尝试了很多实验,但都因为这样或那样的原因而失败了:

  1. 使用 setCustomSelectionActionModeCallback 并在其 onCreateActionMode() 中返回“false”。这可以防止操作栏出现,但也可以防止长按进行文本选择。

  2. 继续 #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;
}
});

关于android - 需要为 EditText 长触而不是 ActionMode 自定义弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22944106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com