Androidでプログラムにより背景ドローアブルを削除する


128

@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>

回答:


316

これを試して

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

RelativeLayoutドキュメントの setBackground関数を確認してください


4
このエラーが発生する:タイプViewのメソッドsetBackgroundResource(int)は引数(null)に適用できません
UKDataGeek

2
それが機能しない場合:android:srcではなくbackgroundプロパティを使用しているかどうかを確認してください!
Chris Conway、

3
setBackgroundDrawableは非推奨になりました。以下の@Surajの答えは今より良いです。
Anand Sainath、2013

6
API 16?API 8には何かありますか?
user1940676 2013

1
setBackgroundResource(0)を使用します。@AdamStelmaszczykが回答しました。、
Zar E Ahmer 2014

70

setBackgroundResource(0)最良の選択肢です。ドキュメントから:

背景を特定のリソースに設定します。リソースはDrawableオブジェクトを参照するか、背景を削除するには0を参照する必要があります

API 1以降であるため、どこでも機能します。

setBackgroundAPI 16でかなり後に追加されたためminSdkVersion、16未満の場合は機能しません。


2
ありがとう、4時間のヘッドバンギングの後に私を完全に救いました。これは、onClickイベントでトグルボタン(2つのドローアブルの選択肢)を動的に作成する場合に非常に便利ですが、トグルボタンが引き継ぐ前に表示するボタンが必要です(クリックイベントが発生するまで何も表示されないため、使用setBackgroundResource(0)すると、以前の「設定」ボタンのドローアブルを削除できます)。
Azurespot 2014年

2
これは、メモリ管理とAPIレベルのサポートの両方の点で最良のソリューションであるため、選択した答えになるはずです。
gregtczap

47

これは私が背景色を削除するのに役立ちました、それが誰かを助けることを願っています。 setBackgroundColor(Color.TRANSPARENT)


3
ドローアブルにはパディングがある場合があるため、背景を削除する場合は、パディングも削除する必要があります。
のMichałKisiel

1
setBackgroundResource(0)は、背景を完全に削除し、オーバードローを減らすため、最良のオプションです。
ミラノ

4

このコードを試してください:

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

これも機能します:

imgView.setImageResource(0); 

ただし、これは機能しません。

imgView.setImageResource(null); 

4

私はandroid 4+でこのコードを試します:

view.setBackgroundDrawable(0);

タイプViewのメソッドsetBackgroundDrawable(
Drawable

2

この方法で最高のパフォーマンス:

imageview.setBackgroundResource(R.drawable.location_light_green);

これを使って。



0

を使用setBackgroundColor(Color.TRANSPARENT)して背景を透明に設定するか、を使用しますsetBackgroundColor(0)。以下Color.TRANSPARENTは、カラークラスのデフォルト属性です。正常に動作します。


0

ケースシナリオがあり、上記のすべての回答を試しましたが、常に新しいイメージが古いイメージの上に作成されました。私のために働いた解決策は:

imageView.setImageResource(R.drawable.image);

0

優れた回答に加えて、xmlを使用してこれを実現したい場合は、以下を追加できます。

android:background="@android:color/transparent

あなたの見解に。


0

まず、XMLレイアウトで記述する必要があります。

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

次に、これをJavaを使用して表示するために使用します。

myimage.setVisibility(SHOW); //HIDE

それは何ですか?何のために?
CoolMind 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.