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>

Jawaban:


316

Coba ini

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

Periksa fungsi setBackground dalam dokumentasi RelativeLayout


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.


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)


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); 

4

Saya mencoba kode ini di Android 4+ :

view.setBackgroundDrawable(0);

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.



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.


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);

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.


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

Apa itu? Untuk apa?
CoolMind
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.