我正在创建一个电子邮件表单,并希望在 EditText 中包含无法删除的文本。在下面的屏幕截图中,To
无法删除。
如果有人对如何实现上述目标有建议,那就太好了 - 谢谢。
To
EditText 框的当前代码:
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="0dp"
android:hint="@string/email_to" >
</EditText>
问题是 android:hint
文本在用户开始发短信时消失,而 android:text
可以被用户删除。
我们怎么会有不能删除的文字呢?谢谢。
注意事项:
此外,我想指出,我有一个使用清除按钮清除文本的方法 - 这工作正常 - 但我希望它不会删除固定文本(如果我实现了!).. Here `s 的代码:
private void clearForm(ViewGroup group)
{
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
}
if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
clearForm((ViewGroup)view);
}
}
解决方案:
管理一个迂回的方式来做到这一点。我在嵌套的线性布局中创建了一个 TextView 和 EditText。我使用 android:background="#00000000"
关闭了 EditText 中的边框。
我在drawable
文件夹中创建了一个xml文件,并在相关的线性布局中引用它,如下所示:android:background="@drawable/customxml"
最佳答案
您可以使用 Text Watcher 监听器来完成此操作。 您可以通过检查 edittext 的长度将文本保留在 edittext 中。
例如 editText.setText("To")//表示长度为 2
然后在 afterTextChanged 方法中,检查 editText 中的文本是否已被删除(检查 editText 中文本的长度)
这是完整的示例代码:
editText.setText("To");
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(s.length < 2){
editText.setText("To")//set editext with "To" again like has been initialized
editText.setSelection(editText.getText().length)// to make cursor in end of text
}
}
});
希望对您有所帮助!
关于android - EditText - 有默认文本不可删除,离开EditText后用背景覆盖文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19097040/