我有一个带有一些虚拟文本的EditText . 当用户点击它时我希望它被选中,这样当用户开始输入时,虚拟文本就会被删除 .
我怎样才能做到这一点?
您可以尝试使用 main.xml 文件:
main.xml
android:selectAllOnFocus="true"
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(); } });
我知道你've found a solution, but really the proper way to do what you'要求的是在EditText中使用 android:hint 属性 . 当文本框为空且未聚焦时,此文本显示,但在选择EditText框时消失 .
android:hint
为什么不尝试 android:hint="hint" 向用户提供提示.. !!
当用户点击edittextbox时,“提示”将自动消失 . 它是最合适的解决方案 .
通过调用焦点和选择程序来管理它
{ editabletext.requestFocus(); editabletext.selectAll(); }
SelectAllOfFocus在EditText第一次获得焦点时起作用,但如果您想在每次用户点击时选择文本,则需要在两次之间调用 editText.clearFocus() .
editText.clearFocus()
例如,如果您的应用程序有一个EditText和一个按钮,则在更改EditText后单击该按钮会将焦点保留在EditText中 . 然后,用户必须使用光标句柄和退格键来删除EditText中的内容,然后才能输入新值 . 所以在Button的 onClick 方法中调用 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时,虚拟键盘将永远不会出现
9 回答
您可以尝试使用
main.xml
文件:如果您想以编程方式执行此操作,则此方法有效 .
我知道你've found a solution, but really the proper way to do what you'要求的是在EditText中使用
android:hint
属性 . 当文本框为空且未聚焦时,此文本显示,但在选择EditText框时消失 .为什么不尝试 android:hint="hint" 向用户提供提示.. !!
当用户点击edittextbox时,“提示”将自动消失 . 它是最合适的解决方案 .
通过调用焦点和选择程序来管理它
SelectAllOfFocus在EditText第一次获得焦点时起作用,但如果您想在每次用户点击时选择文本,则需要在两次之间调用
editText.clearFocus()
.例如,如果您的应用程序有一个EditText和一个按钮,则在更改EditText后单击该按钮会将焦点保留在EditText中 . 然后,用户必须使用光标句柄和退格键来删除EditText中的内容,然后才能输入新值 . 所以在Button的
onClick
方法中调用editText.clearFocus()
.您还可以在之后向editText添加OnClick方法
并在那:
单击editText后,将立即选中整个文本 .
我尝试了上面的答案,直到我转换语句才行 . 这对我有用:
我不得不问焦点是否在EditText上,如果不是先请求焦点然后清除它 . 否则,下次我点击EditText时,虚拟键盘将永远不会出现