我有一个EditText与一些虚拟文本在其中。当用户点击它时,我希望它被选中,以便当用户开始输入虚拟文本被删除。
我怎样才能做到这一点呢?
你可以在你的main.xml文件中尝试:
main.xml
android:selectAllOnFocus="true"
或者,在Java中,使用
editText.setSelectAllOnFocus(true);
EditText dummy = ... // android.view.View.OnFocusChangeListener dummy.setOnFocusChangeListener(new OnFocusChangeListener(){ public void onFocusChange(View v, boolean hasFocus){ if (hasFocus) && (isDummyText()) ((EditText)v).selectAll(); } });
我知道你已经找到了一个解决方案,但真正正确的方法是在你的EditText中使用android:hint属性。该文本在框为空且未聚焦时显示,但在选择EditText框时消失。
android:hint
你为什么不试试android:提示= "提示"来给用户提供提示呢? !
如果您想以编程的方式进行,这是可行的。
SelectAllOnFocus在EditText第一次获得焦点时起作用,但如果你想在用户单击文本时选择文本每一个,你需要在两次之间调用editText.clearFocus()。
editText.clearFocus()
例如,如果您的应用程序有一个EditText和一个按钮,在更改EditText后单击按钮将焦点留在EditText中。然后,用户必须使用光标句柄和退格键删除EditText中的内容,然后才能输入新值。所以在Button的onClick方法中调用editText.clearFocus()。
onClick
你也可以在editText之后添加一个OnClick方法
_editText.setSelectAllOnFocus(true);
在这里:
_editText.clearFocus(); _editText.requestFocus();
只要单击editText,整个文本就会被选中。
通过调用程序上的焦点和选择来管理它
{ editabletext.requestFocus(); editabletext.selectAll(); }
我尝试了上面的答案,直到我交换了陈述才奏效。这对我来说很管用:
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时,虚拟键盘将永远不会出现
这对我来说很有用:
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(); } } });
只需将其添加到.xml文件中的editText中
android: selectAllOnFocus = " true "
这就像一个魅力:
XML
Java
在TextView - android:selectAllOnFocus了解更多