如果我应用背景,如何在EditText上返回默认样式?

时间:2011-08-02 12:41:59

标签: android android-edittext android-drawable android-resources nine-patch

我刚遇到一个我不知道如何解决的问题。它看起来很傻但我找不到解决方法。

我在android中有一个带有几个EditText的表单,当你提交表单时,它检查那些EditText,如果他们有错误的数据,我将EditText更改为红色边框(应用9patch图像)。

myEditText.setBackgroundResource(R.drawable.edittext_red);

问题是,我想在用户更改EditText时恢复android的默认样式,但我不知道该怎么做。如果我这样做:

myEditText.setBackgroundResource(0);

它会删除所有内容,而这不是我想要的内容。

谢谢!

2 个答案:

答案 0 :(得分:52)

首先,在使用自己的ninepatch调用setBackgroundResource之前,请存储EditText的原始背景,如下所示:

Drawable originalDrawable = myEditText.getBackground();

然后,如果用户输入了错误的数据,您可以设置红色边框ninepatch:

myEditText.setBackgroundResource(R.drawable.edittext_red);

之后,当您想要恢复EditText的外观时,请使用存储的drawable:

myEditText.setBackgroundDrawable(originalDrawable);

或者,您可以直接引用默认的Android EditText背景:

myEditText.setBackgroundResource(android.R.drawable.edit_text);

androiddrawables,您可以看到不同的drawable如何查找不同版本的Android,并获取其资源标识符。此方法应适用于所有drawable,而不仅仅是EditText

这些(和其他android资源)也可以在你自己的系统上找到,在

的android-sdk文件夹中

< android-sdk文件夹的路径> / android-sdk / platforms / android-< API级别> / data / res /

答案 1 :(得分:0)

对于Kotlin的材料设计:

function foo2(a: Record<string, readonly string[]>) {}
foo2(Actions) // works without type assertion