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

时间:2011-01-12 13:47:07

标签: android android-edittext

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

我怎样才能做到这一点?

11 个答案:

答案 0 :(得分:479)

您可以尝试使用main.xml文件:

android:selectAllOnFocus="true"

答案 1 :(得分:151)

editText.setSelectAllOnFocus(true);

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

答案 2 :(得分:32)

EditText dummy = ... 

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

答案 3 :(得分:25)

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

答案 4 :(得分:11)

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

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

答案 5 :(得分:11)

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

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

答案 6 :(得分:4)

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

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

答案 7 :(得分:4)

您还可以在

之后向editText添加OnClick方法
_editText.setSelectAllOnFocus(true);

并且在那:

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

单击editText后,选择整个文本。

答案 8 :(得分: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时,虚拟键盘将永远不会出现

答案 9 :(得分:1)

只需将其添加到.xml文件中的editText中

  

android:selectAllOnFocus =“ true”

答案 10 :(得分: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();
            }

        }
    });