我有一个EditText与一些虚拟文本在其中。当用户点击它时,我希望它被选中,以便当用户开始输入虚拟文本被删除。

我怎样才能做到这一点呢?


当前回答

这就像一个魅力:

XML

android:selectAllOnFocus="true"

Java

editText.setSelectAllOnFocus(true);

了解更多在TextView - android:selectAllOnFocus

其他回答

你也可以在editText之后添加一个OnClick方法

_editText.setSelectAllOnFocus(true);

在这里:

_editText.clearFocus();
_editText.requestFocus();

只要单击editText,整个文本就会被选中。

我知道你已经找到了一个解决方案,但真正正确的方法来做你所要求的只是使用android:提示属性在你的EditText。该文本在框为空且未聚焦时显示,但在选择EditText框时消失。

SelectAllOnFocus在EditText第一次获得焦点时起作用,但如果您希望在用户每次单击文本时都选择文本,则需要在两次之间调用EditText . clearfocus()。

例如,如果您的应用程序有一个EditText和一个按钮,在更改EditText后单击按钮将焦点留在EditText中。然后,用户必须使用光标句柄和退格键删除EditText中的内容,然后才能输入新值。因此在按钮的onClick方法中调用editText.clearFocus()。

editText.setSelectAllOnFocus(true);

如果您想以编程的方式进行,这是可行的。

这对我来说很有用:

myEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(myEditText.isFocused()){
                myEditText.requestFocus();
                myEditText.clearFocus();
                myEditText.setSelection(myEditText.getText().length(), 0);
            }else{
                myEditText.requestFocus();
                myEditText.clearFocus();
            }

        }
    });