我有一个带有一些虚拟文本的EditText。当用户点击它时我希望它被选中,这样当用户开始输入时,虚拟文本就会被删除。
我怎样才能做到这一点?
你可以试试你的main.xml
文件:
android: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();
}
}
});
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 =“hint”来向用户提供提示.. !!
当用户点击edittextbox时,“提示”将自动消失。它是最合适的解决方案。
通过调用焦点和选择程序来管理它
{
editabletext.requestFocus();
editabletext.selectAll();
}
SelectAllOfFocus在EditText第一次获得焦点时起作用,但如果您想在每次用户点击它时选择文本,则需要在两次之间调用editText.clearFocus()
。
例如,如果您的应用程序有一个EditText和一个按钮,则在更改EditText后单击该按钮会将焦点保留在EditText中。然后,用户必须使用光标句柄和退格键来删除EditText中的内容,然后才能输入新值。所以在Button的editText.clearFocus()
方法中调用onClick
。
您也可以在之后向editText添加OnClick方法
_editText.setSelectAllOnFocus(true);
并在那:
_editText.clearFocus();
_editText.requestFocus();
单击editText后,将立即选中整个文本。
我尝试了上面的答案,直到我转换语句才开始工作。这对我有用:
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时,虚拟键盘将永远不会出现