我刚遇到一个我不知道如何解决的问题。它看起来很傻但我找不到解决方法。
我在android中有一个带有几个EditText的表单,当你提交表单时,它检查那些EditText,如果他们有错误的数据,我将EditText更改为红色边框(应用9patch图像)。
myEditText.setBackgroundResource(R.drawable.edittext_red);
问题是,我想在用户更改EditText时恢复android的默认样式,但我不知道该怎么做。如果我这样做:
myEditText.setBackgroundResource(0);
它会删除所有内容,而这不是我想要的内容。
谢谢!
答案 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