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

发布于 2024-11-27 15:10:59 字数 404 浏览 4 评论 0原文

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

我在 android 中有一个带有多个 EditText 的表单,当您提交表单时,它会检查这些 EditText,如果它们有错误的数据,我会将 EditText 更改为红色边框(应用九块图像)。

myEditText.setBackgroundResource(R.drawable.edittext_red);

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

myEditText.setBackgroundResource(0);

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

谢谢!

I just encountered with a problem that I don't know how to solve. It looks silly but I cannot find a way to fix it.

I have a form in android with several EditText and when you submit the form it checks those EditText and if they have wrong data I change the EditText to red border (applying a ninepatch image).

myEditText.setBackgroundResource(R.drawable.edittext_red);

The problem is, I want to restore android's default style when the user change the EditText, but I don't know how to do it. if I do:

myEditText.setBackgroundResource(0);

It will just remove everything and that's not what I want.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

救赎№ 2024-12-04 15:10:59

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

Drawable originalDrawable = myEditText.getBackground();

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

myEditText.setBackgroundResource(R.drawable.edittext_red);

稍后,当您想要恢复外观时在 EditText 中,使用存储的可绘制对象:

myEditText.setBackgroundDrawable(originalDrawable);

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

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

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

这些(以及其他 Android 资源)也可以在您自己的系统上的文件夹中找到

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

First, before you call setBackgroundResource with your own ninepatch, store the original background of the EditText, like this:

Drawable originalDrawable = myEditText.getBackground();

Then, if the user entered the wrong data, you can set your red border ninepatch:

myEditText.setBackgroundResource(R.drawable.edittext_red);

And later, when you want to restore the look of the EditText, use the stored drawable:

myEditText.setBackgroundDrawable(originalDrawable);

Alternatively you can reference the default Android EditText background directly like this:

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

At androiddrawables you can see how the different drawables look for the different versions of Android, and get their resource identifier. This method should work for all drawables, not just EditText

These (and other android resources) can also be found on your own system, in the android-sdk folder in

< path to android-sdk folder>/android-sdk/platforms/android-< API level>/data/res/

二货你真萌 2024-12-04 15:10:59

对于 Kotlin 的材料设计:

edit.apply {
    setBackgroundResource(androidx.appcompat.R.drawable.abc_edit_text_material)
}

For material design with Kotlin:

edit.apply {
    setBackgroundResource(androidx.appcompat.R.drawable.abc_edit_text_material)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文