EditText - 具有无法删除的默认文本,并在离开EditText后用背景覆盖文本

Tom*_*Tom 5 android android-edittext

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

无法删除发件人 - 这可能吗?

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

我当前的 EditText 框代码To

<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>
Run Code Online (Sandbox Code Playgroud)

问题是android:hint当用户开始发短信时,文本会消失,并且android:text可以被用户删除。

怎样才能有无法删除的文字呢?谢谢。

笔记:

另外,我想指出,我有一种使用清除按钮清除文本的方法 - 这工作正常 - 但我希望它不会删除固定文本(如果我实现了!)..这是代码:

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);
}
}
Run Code Online (Sandbox Code Playgroud)

解决方案:

管理了一种迂回的方式来做到这一点。我在嵌套的线性布局中创建了一个 TextView 和 EditText。我使用 关闭了 EditText 中的边框android:background="#00000000"

我在drawable文件夹中创建了一个 xml 文件,并在相关的线性布局中引用它,如下所示:android:background="@drawable/customxml"

Dal*_*son 2

要获得所需的视觉外观,请包含一个包含文本视图和 EditView 的水平 LinearLayout。关闭 EditView 周围的边框(有一个属性可以做到这一点(我认为它是 android:shadowColor))使用边距和填充以使它们彼此相邻。设置线性布局上的背景颜色,以在组合对周围放置边框。

我不会太担心效率。你筑巢的不是很深。最大的挑战是让它看起来像一个单一的视图。

编辑:另一个想法。如果这不起作用,您可以将“To”设置为可绘制对象,并使用 android:drawableLeft 属性进行设置。