Hapus gambar latar yang bisa diprogram di Android

128

Saya ingin menghapus latar belakang yang dapat @drawable/bgdiprogram. Apakah ada cara untuk melakukan itu?

Saat ini, saya memiliki XML berikut di tata letak saya:

<?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>
Emkey
sumber

Jawaban:

316

Coba ini

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

Periksa fungsi setBackground dalam dokumentasi RelativeLayout

Maragues
sumber
4
Saya mendapatkan kesalahan ini: Metode setBackgroundResource (int) dalam tipe View tidak berlaku untuk argumen (null)
UKDataGeek
2
Jika tidak berhasil: periksa apakah Anda telah menggunakan properti latar belakang dan bukan android: src!
Chris Conway
3
setBackgroundDrawable sekarang sudah tidak digunakan lagi. @ Suraj jawaban di bawah lebih baik sekarang.
Anand Sainath
6
api 16? apakah ada sesuatu untuk api 8?
user1940676
1
Gunakan setBackgroundResource (0). sebagaimana Dijawab oleh @AdamStelmaszczyk. ,
Zar E Ahmer
70

setBackgroundResource(0)adalah pilihan terbaik. Dari dokumentasi :

Atur latar belakang ke sumber daya yang diberikan. Sumber daya harus merujuk ke objek Drawable atau 0 untuk menghapus latar belakang .

Ini berfungsi di mana-mana, karena sejak API 1.

setBackgroundditambahkan jauh kemudian, di API 16, jadi itu tidak akan berfungsi jika Anda minSdkVersionlebih rendah dari 16.

Adam Stelmaszczyk
sumber
2
Terima kasih, benar-benar menyelamatkan saya setelah 4 jam head-banging. Ini sangat berguna jika Anda secara dinamis membuat tombol toggle (pilihan 2 drawable) dalam acara onClick, tetapi perlu tombol yang terlihat untuk ditampilkan sebelum yang Anda toggle mengambil alih (karena tidak ada yang akan ditampilkan hingga acara klik terjadi, jadi ketika tidak, Anda dapat menggunakan setBackgroundResource(0)untuk menghapus "set" sebelumnya tombol Anda dapat ditarik).
Azurespot
2
Ini harus menjadi jawaban yang dipilih karena itu adalah solusi terbaik baik dalam hal manajemen memori dan dukungan tingkat api.
gregtczap
47

Ini membantu saya menghilangkan warna latar belakang, semoga membantu seseorang. setBackgroundColor(Color.TRANSPARENT)

Suraj Bajaj
sumber
3
Drawables dapat memiliki padding, jadi jika Anda menghapus latar belakang, Anda perlu menghapus padding juga.
Michał Kisiel
1
setBackgroundResource (0) adalah opsi terbaik karena, menghapus latar belakang sepenuhnya karenanya, mengurangi penarikan berlebih.
Milan
4

Coba kode ini:

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

juga yang ini berfungsi:

imgView.setImageResource(0); 

tapi hati-hati ini tidak berfungsi:

imgView.setImageResource(null); 
Adnan Abdollah Zaki
sumber
4

Saya mencoba kode ini di Android 4+ :

view.setBackgroundDrawable(0);
Salman666
sumber
Metode setBackgroundDrawable (Drawable) dalam tipe View tidak berlaku untuk argumen (int)
Tobrun
2

Performa terbaik pada metode ini:

imageview.setBackgroundResource(R.drawable.location_light_green);

Gunakan ini.

Mahmudul
sumber
1

Ini bekerja untuk saya:

yourview.setBackground(null);
lscofield
sumber
0

Gunakan setBackgroundColor(Color.TRANSPARENT)untuk mengatur latar belakang sebagai transparan, atau gunakan setBackgroundColor(0). Ini Color.TRANSPARENTadalah atribut default dari kelas warna. Ini akan bekerja dengan baik.

anand krish
sumber
0

Saya memiliki skenario kasus dan saya mencoba semua jawaban dari atas, tetapi selalu gambar baru dibuat di atas yang lama. Solusi yang berhasil bagi saya adalah:

imageView.setImageResource(R.drawable.image);
Norđe Nilović
sumber
0

Selain jawaban yang sangat bagus, jika Anda ingin mencapai ini melalui xml maka Anda dapat menambahkan:

android:background="@android:color/transparent

menurut pandangan Anda.

Jeel Shah
sumber
0

Pertama, Anda harus menulis dalam tata letak XML:

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

lalu gunakan ini untuk menunjukkannya menggunakan Java:

myimage.setVisibility(SHOW); //HIDE
SRam
sumber
Apa itu? Untuk apa?
CoolMind