Android 文字选择取决于手机

Android 文字选择取决于手机,android,android-edittext,Android,Android Edittext,在我的应用程序中,我有一个编辑文本,用户可以在其中选择文本的一部分。问题在于,选择行为因手机而异:对于一款手机,用户可以正常选择,但对于另一款手机,用户必须点击文本指示器,然后点击“全选” 如何将第一个行为设置为默认行为?为什么手机之间的行为有所不同 谢谢你的回答,祝你有愉快的一天 编辑: 现在,我使用此方法选择包含光标的单词: fun EditText.selectCurrentWord() { val textSpan = text val selection = selec

在我的应用程序中,我有一个编辑文本,用户可以在其中选择文本的一部分。问题在于,选择行为因手机而异:对于一款手机,用户可以正常选择,但对于另一款手机,用户必须点击文本指示器,然后点击“全选”

如何将第一个行为设置为默认行为?为什么手机之间的行为有所不同

谢谢你的回答,祝你有愉快的一天

编辑:

现在,我使用此方法选择包含光标的单词:

fun EditText.selectCurrentWord() {
    val textSpan = text
    val selection = selectionStart
    val pattern = Pattern.compile("\\w+")
    val matcher = pattern.matcher(textSpan)
    var start: Int
    var end: Int

    while (matcher.find()) {
        start = matcher.start()
        end = matcher.end()

        if (selection in start..end) {
            setSelection(start, end)
            break
        }
    }
}
但现在的问题是,选择的开始和结束处的游标不会出现


编辑文本是可选择的,并且
isCursorVisible
设置为true。

您可以尝试使用
按钮
选择文本

EditText myET = findViewById(R.id.myET);
Button selectBtn = findViewById(R.id.selectBtn);

selectBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        myET.setSelectAllOnFocus(true);
        myET.selectAll();    
    }
});

您可以使用打开上下文菜单

openContextMenu(myET);
您还可以获得光标的起点和终点的位置

myET.getSelectionStart();
myET.getSelectionEnd();
参考答案

  • 更新1 将此添加到您的按钮单击中,这似乎有效,但有时您必须单击2次才能调整此设置

    myET.performLongClick();
    myET.setSelection(0, myET.length());
    

    希望这会有帮助

    作为替代方案,您可以为@RahulGaur提供一个专用按钮Yes,但我有一个多行编辑文本,因此我只想选择文本的一部分…如果您只想选择第一行,您可以修改此按钮,您可以找到
    return
    所在的位置,但我如何选择用户长时间单击的单词?请查看此Hi,谢谢您的回答!我尝试过使用
    openContextMenu
    ,但什么也没发生。。。有了光标的起点/终点,我可以显示锚吗?谢谢,太完美了!我甚至可以删除
    postDelayed
    ,只需长按
    performlick
    setSelection