当单击EditText视图时,如何选择所有文本?

6
我试过了android:selectAllOnFocus,当然我也在使用android:hint。应用程序加载后,requestFocus触发并选择了整个文本。
问题是当我点击EditText时,选择就消失了。
我已经阅读了以下内容:在EditText获得焦点时选择其中所有的文本

2
这是非常正常的。否则,用户就无法取消选择。 - CommonsWare
1
你尝试过在onclick事件中通过Java代码使用selectAllOnFocus吗? - AJcodez
1
你期望发生什么?按照你的逻辑,一旦用户点击了选择,它就永远不会消失。这真的是你想要的吗? - Alex Lockwood
3
感谢您的评论-原因与内置Android浏览器所见相同。尝试前往URL,然后单击URL栏,您会发现它自动始终选择整个URL。原因是:逐个字符地删除它将太耗时。 - Stephan Tual
6个回答

9

由于某些原因,只有在使用Handler发布时才能在Jelly Bean上正常工作:

new Handler().post(new Runnable() {
    @Override
    public void run() {
        paidView.selectAll();
    }
});

与我的情况相同:在EditTextPreference中的BroadcastReceiver中调用setText()。 - wrapperapps

1

View.OnClickListener 中设置选择,如下所示:

editText.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        editText.setSelection(0, editText.getText().length() - 1);
    }
}

抱歉,但这个不起作用。文本没有被选中。我知道你想做什么,但我也很惊讶它没能成功。我正在运行 ICS。 - Stephan Tual
1
我认为你不需要 -1 这部分。 - ban-geoengineering

1

在View.OnClickListener中设置选择,如下所示:(0和文本长度相反于先前批准的响应)- 这将确保当用户开始输入内容时,内容将被覆盖。

editText.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        editText.setSelection(editText.getText().length() - 1, 0);
    }
}

要选择所有文本,您需要编写editText.setSelection(editText.getText().length(), 0);。 - Khyati Vara

1
我知道这是一篇旧文章,但我也遇到了同样的问题。对我来说,原因是我喜欢将键盘移开(取消它),以便确定位置(或点击按钮添加或删除数据行),当我再次触摸先前正在编辑的EditText时,键盘弹出并且文本未选中,这很烦人,迫使我要么努力将光标移到想要开始删除的位置,要么触摸另一个EditText,然后再次触摸原始EditText重新选择所有内容。我只想在转到该EditText时让键盘弹出并准备好覆盖文本。

有简单的解决方法:

1)在大多数情况下,长按可以为您完成此操作。

2)如果您已经使用了setSelectAllOnFocus(true),您只需要在onClick监听器中加入简单的clearFocus()requestFocus()即可:

etMyEditText.setSelectAllOnFocus(true);
etMyEditText.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        view.clearFocus();
        view.requestFocus();
    }
});

这样,当您点击EditText时,无论软键盘状态如何,它都会被全部选择。
额外的奖励: 在AndroidManifest.xml文件中,在标签中添加android:windowSoftInputMode="adjustPan",可以强制选定的EditText在软键盘弹出时保持可见。

1
尝试这个。
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    editText.selectAll();
    //or this.selectAll();
}

选择所有文本。

0
在执行findViewById之后,按照下面的代码进行操作即可:
    edtProductPrice.setSelectAllOnFocus(true);
    edtProductPrice.requestFocus();
    edtProductPrice.selectAll();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接