我有一个EditText,其中包含一些虚拟文本。当用户点击它时,我希望它被选中,以便当用户开始输入时,虚拟文本将被删除。
我该如何实现这一功能?
我有一个EditText,其中包含一些虚拟文本。当用户点击它时,我希望它被选中,以便当用户开始输入时,虚拟文本将被删除。
我该如何实现这一功能?
您可以在您的main.xml
文件中尝试:
android:selectAllOnFocus="true"
或者在Java中,使用
editText.setSelectAllOnFocus(true);
editText.setSelectAllOnFocus(true);
如果你想以编程的方式实现,这个方法是可行的。
Fragments
上进行了测试)。 - Hadi SatrioeditText.requestFocus()
),请在此之前调用editText.clearFocus()
以确保在视图已经聚焦的情况下发生所需的操作。 - Bad LoserEditText 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)
等等... - SparK我知道您已经找到了解决方案,但是真正正确的方法是在EditText中使用android:hint
属性。当文本框为空且未聚焦时,此文本将显示,但在选择EditText文本框后即会消失。
通过调用程序的焦点和选择来进行管理
{
editabletext.requestFocus();
editabletext.selectAll();
}
"提示"将在用户单击编辑文本框时自动消失。 这是一种适当且最佳的解决方案。
_editText.setSelectAllOnFocus(true);
而在此之中:
_editText.clearFocus();
_editText.requestFocus();
SelectAllOnFocus属性只在EditText第一次获取焦点时生效,但如果希望用户每次单击EditText时都选择文本,则需要在两次操作之间调用editText.clearFocus()
。
例如,如果您的应用程序有一个EditText和一个按钮,在更改EditText后单击按钮会使焦点留在EditText中。然后用户必须使用光标手柄和退格键删除EditText中的内容,然后才能输入新值。因此,在Button的onClick
方法中调用editText.clearFocus()
。
这个非常好用:
XML
android:selectAllOnFocus="true"
Java
editText.setSelectAllOnFocus(true);
了解更多信息,请访问TextView - android:selectAllOnFocus
我尝试了上面的答案,但直到我交换了语句才成功。这是对我有效的方法:
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时虚拟键盘将永远不会出现。