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

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

我有一个Android与几个EditText表单,当您提交表单,它会检查这些EditText,如果他们有错误的数据我改变EditText红色边框(应用ninepatch图像)。

myEditText.setBackgroundResource(R.drawable.edittext_red); 

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

 myEditText.setBackgroundResource(0); 

它只会删除一切,这不是我想要的。

谢谢!

Solutions Collecting From Web of "如果我应用背景,如何返回EditText上的默认样式?"

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

 Drawable originalDrawable = myEditText.getBackground(); 

那么,如果用户input了错误的数据,你可以设置你的红色边框ninepatch:

 myEditText.setBackgroundResource(R.drawable.edittext_red); 

稍后,当您想要恢复EditText的外观时,请使用存储的绘图:

 myEditText.setBackgroundDrawable(originalDrawable); 

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

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

在androiddrawables中,你可以看到不同的drawables如何查找不同版本的Android,并获取它们的资源标识符。 这个方法应该适用于所有的drawable,而不仅仅是EditText

这些(和其他android资源)也可以在你自己的系统上find,在android-sdk文件夹中

<android-sdk文件夹的path> / android-sdk / platforms / android- <API level> / data / res /