当焦点获得焦点时,选择EditText内的所有文本

问题描述 投票:208回答:10

我有一个带有一些虚拟文本的EditText。当用户点击它时我希望它被选中,这样当用户开始输入时,虚拟文本就会被删除。

我怎样才能做到这一点?

android android-edittext
10个回答
487
投票

你可以试试你的main.xml文件:

android:selectAllOnFocus="true"

0
投票

这对我有用:

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();
            }

        }
    });

155
投票
editText.setSelectAllOnFocus(true);

如果您想以编程方式执行此操作,则此方法有效。


33
投票
EditText dummy = ... 

// android.view.View.OnFocusChangeListener
dummy.setOnFocusChangeListener(new OnFocusChangeListener(){
    public void onFocusChange(View v, boolean hasFocus){
        if (hasFocus) && (isDummyText())
            ((EditText)v).selectAll();
    }
});

25
投票

我知道你找到了一个解决方案,但实际上正确的方法就是在EditText中使用android:hint属性。当文本框为空且未聚焦时,此文本显示,但在选择EditText框时消失。


11
投票

你为什么不试试android:hint =“hint”来向用户提供提示.. !!

当用户点击edittextbox时,“提示”将自动消失。它是最合适的解决方案。


11
投票

通过调用焦点和选择程序来管理它

{
editabletext.requestFocus();
editabletext.selectAll();
}

4
投票

SelectAllOfFocus在EditText第一次获得焦点时起作用,但如果您想在每次用户点击它时选择文本,则需要在两次之间调用editText.clearFocus()

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


4
投票

您也可以在之后向editText添加OnClick方法

_editText.setSelectAllOnFocus(true);

并在那:

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

单击editText后,将立即选中整个文本。


2
投票

我尝试了上面的答案,直到我转换语句才开始工作。这对我有用:

    myEditText.setSelectAllOnFocus(true);
    myEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickMyEditText();
        }
    });

   private void onClickMyEditText() {
       if(myEditText.isFocused()){
        myEditText.clearFocus();
        myEditText.requestFocus();
       }else{
           myEditText.requestFocus();
           myEditText.clearFocus();
       }
   }

我不得不问焦点是否在EditText上,如果不是先请求焦点然后清除它。否则,下次我点击EditText时,虚拟键盘将永远不会出现

© www.soinside.com 2019 - 2024. All rights reserved.