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