在 Android 中以编程方式删除背景可绘制对象

发布于 2024-11-26 08:15:28 字数 415 浏览 1 评论 0原文

我想以编程方式删除背景可绘制 @drawable/bg 。 有办法做到这一点吗?

目前,我的布局中有以下 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/widget29"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/bg">

</RelativeLayout>

I want to remove the background drawable @drawable/bg programmatically.
Is there a way to do that?

Currently, I have the following XML in my layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/widget29"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/bg">

</RelativeLayout>

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

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

发布评论

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

评论(11

一影成城 2024-12-03 08:16:02

首先,你必须用 XML 布局编写:

android:visibility="invisible" <!--or set VISIBLE-->

然后用 Java 来显示它:

myimage.setVisibility(SHOW); //HIDE

First, you have to write in XML layout:

android:visibility="invisible" <!--or set VISIBLE-->

then use this to show it using Java:

myimage.setVisibility(SHOW); //HIDE
请帮我爱他 2024-12-03 08:16:00

我有一个案例场景,我尝试了上面的所有答案,但总是在旧图像之上创建新图像。对我有用的解决方案是:

imageView.setImageResource(R.drawable.image);

I have a case scenario and I tried all the answers from above, but always new image was created on top of the old one. The solution that worked for me is:

imageView.setImageResource(R.drawable.image);
睫毛上残留的泪 2024-12-03 08:15:55

使用 setBackgroundColor(Color.TRANSPARENT) 将背景设置为透明,或使用 setBackgroundColor(0)。这里 Color.TRANSPARENT 是颜色类的默认属性。它会工作得很好。

Use setBackgroundColor(Color.TRANSPARENT) to set the background as transparent, or use setBackgroundColor(0). Here Color.TRANSPARENT is the default attribute from color class. It will work fine.

筱武穆 2024-12-03 08:15:46

这对我来说工作:

yourview.setBackground(null);

This work for me:

yourview.setBackground(null);
旧故 2024-12-03 08:15:43

除了出色的答案之外,如果您想通过 xml 实现此目的,那么您可以将:

android:background="@android:color/transparent

添加到您的视图中。

In addition to the excellent answers, if you want to achieve this via xml then you can add:

android:background="@android:color/transparent

to your view.

浅唱々樱花落 2024-12-03 08:15:42

此方法的最佳性能:

imageview.setBackgroundResource(R.drawable.location_light_green);

使用此方法。

Best performance on this method :

imageview.setBackgroundResource(R.drawable.location_light_green);

Use this.

寒尘 2024-12-03 08:15:39

我在 android 4+ 中尝试此代码:

view.setBackgroundDrawable(0);

I try this code in android 4+:

view.setBackgroundDrawable(0);
海螺姑娘 2024-12-03 08:15:37

试试这个代码:

imgView.setImageResource(android.R.color.transparent); 

这个也可以工作:

imgView.setImageResource(0); 

但是要小心这个不起作用:

imgView.setImageResource(null); 

Try this code:

imgView.setImageResource(android.R.color.transparent); 

also this one works:

imgView.setImageResource(0); 

but be careful this one doesn't work:

imgView.setImageResource(null); 
忱杏 2024-12-03 08:15:36

这帮助我去除了背景颜色,希望对某人有帮助。
setBackgroundColor(Color.TRANSPARENT)

This helped me remove background color, hope it helps someone.
setBackgroundColor(Color.TRANSPARENT)

梦境 2024-12-03 08:15:33

setBackgroundResource(0) 是最好的选择。来自文档

设置给定资源的背景。该资源应引用
可绘制对象或0 删除背景

它适用于任何地方,因为它是从 API 1 开始的。

setBackground 是在 API 16 中添加的,所以如果您的 minSdkVersion 低于 16,它将不起作用。

setBackgroundResource(0) is the best option. From the documentation:

Set the background to a given resource. The resource should refer to a
Drawable object or 0 to remove the background.

It works everywhere, because it's since API 1.

setBackground was added much later, in API 16, so it will not work if your minSdkVersion is lower than 16.

罗罗贝儿 2024-12-03 08:15:31

试试这个

RelativeLayout relative = (RelativeLayout) findViewById(R.id.widget29);
relative.setBackgroundResource(0);

检查 RelativeLayout 文档 中的 setBackground 函数

Try this

RelativeLayout relative = (RelativeLayout) findViewById(R.id.widget29);
relative.setBackgroundResource(0);

Check the setBackground functions in the RelativeLayout documentation

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