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

Gal*_*lip 223 android android-edittext

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

我怎样才能做到这一点?

The*_*ilk 496

您可以尝试在您的main.xml文件中:

android:selectAllOnFocus="true"
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚得知这不起作用,如果在EditText xml中,UI构建器插入了</ requestFocus>标记. (17认同)

cre*_*tos 158

editText.setSelectAllOnFocus(true);
Run Code Online (Sandbox Code Playgroud)

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

  • 对于那些仍然对上面接受的答案有疑问的人:试试这个.确认工作(也测试了`Fragments`). (3认同)
  • 这对我有用......不是上面的解决方案:)谢谢:) (2认同)
  • 同样对我来说..上述解决方案以某种方式不起作用..以编程方式工作 (2认同)

xan*_*ndy 33

EditText dummy = ... 

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

  • @ Galip`OnFocusChangeListener listener = new OnFocusChangeListener` ... etc ...然后`editText1.setOnFocusChangeListener(listener)``editText2.setOnFocusChangeListener(listener)`等等...... (2认同)

kco*_*ock 25

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

  • 在我的应用程序中,这些字段由个人详细信息填充,可以保存.当我加载这些细节时,它将替换'虚拟'文本.使用我的电流方法,我也可以在用户输入详细信息后选择文本.谢谢你的关注! (4认同)

Vai*_*ani 11

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

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

  • 好答案.但是,您可能会遇到使用从设置等中读取的值填充EditText的情况,并且您希望尽可能简单地更改这些值:) (4认同)

AMD*_*AMD 11

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

{
editabletext.requestFocus();
editabletext.selectAll();
}
Run Code Online (Sandbox Code Playgroud)


小智 6

您还可以在之后添加一个 OnClick 方法到 editText

_editText.setSelectAllOnFocus(true);
Run Code Online (Sandbox Code Playgroud)

其中:

_editText.clearFocus();
_editText.requestFocus();
Run Code Online (Sandbox Code Playgroud)

一旦您单击 editText 整个文本被选中。


Nou*_*non 5

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

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