android - EditText - 有默认文本不可删除,离开EditText后用背景覆盖文本

标签 android android-edittext

我正在创建一个电子邮件表单,并希望在 EditText 中包含无法删除的文本。在下面的屏幕截图中,To 无法删除。

Cannot delete From - is this possible?

如果有人对如何实现上述目标有建议,那就太好了 - 谢谢。

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/

相关文章:

android - EditText 在 Lollipop 下方以一种奇怪的方式显示

android - 在 Bitmap 上创建 EditText - Android 编程

android:edittext中文本的对齐方式

Android - 如何在 EditText 上制作 2 个提示?

android - libGDX 设计模式

android - 如何在自定义样式中将滚动条可见性设置为 true

android - 获取视频缩略图时 getContentResolver().query 问题

java - 对话框中的取消按钮不关闭对话框

安卓多屏不兼容

php - 如何将数据从sqlite发送到MYSQL