Android'de arka planı programlı olarak kaldır


129

Arka plan çekilebilirini kaldırmak istiyorum @drawable/bg programlı . Bunu yapmanın bir yolu var mı?

Şu anda, düzenimde aşağıdaki XML var:

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

Yanıtlar:


317

Bunu dene

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

RelativeLayout belgelerindeki setBackground işlevlerini kontrol edin


4
Şu hatayı alıyorum: View türündeki setBackgroundResource (int) yöntemi bağımsız değişkenler için geçerli değil (null)
UKDataGeek

2
Bu işe yaramazsa: android: src yerine arka plan özelliğini kullanıp kullanmadığınızı kontrol edin!
Chris Conway

3
setBackgroundDrawable artık kullanımdan kaldırılmıştır. @ Suraj'ın aşağıdaki cevabı şimdi daha iyi.
Anand Sainath

6
api 16? api 8 için bir şey var mı?
user1940676

1
SetBackgroundResource (0) kullanın. @AdamStelmaszczyk tarafından yanıtlandı. ,
Zar E Ahmer

71

setBackgroundResource(0)en iyi seçenektir. Gönderen belgeler :

Arka planı belirli bir kaynağa ayarlayın. Arka planı kaldırmak için kaynak bir Çizilebilir nesneye veya 0'a başvurmalıdır .

Her yerde çalışır, çünkü API 1'den beri.

setBackgroundAPI 16'da çok daha sonra eklendi, bu nedenle minSdkVersion16'dan düşükse çalışmayacaktır .


2
Teşekkürler, 4 saatlik kafa vuruşundan sonra beni tamamen kurtardım. Bu, bir onClick olayında dinamik olarak geçişli bir düğme (2 çekilebilir seçenek) oluşturduğunuzda, ancak geçişli düğmeleriniz devralmadan önce görünmesi için görünür bir düğmeye ihtiyacınız olduğunda çok kullanışlıdır (çünkü tıklama olayı gerçekleşene kadar hiçbir şey gösterilmeyecektir. varsa, setBackgroundResource(0)önceki "set" düğmenizi kaldırmak için kullanabilirsiniz ).
Azurespot

2
Hem bellek yönetimi hem de api seviyesi desteği açısından en iyi çözüm bu olduğundan seçilen cevap bu olmalıdır.
gregtczap

47

Bu, arka plan rengini kaldırmama yardımcı oldu, umarım birine yardımcı olur. setBackgroundColor(Color.TRANSPARENT)


3
Çekilebilir nesnelerin dolgusu olabilir, bu nedenle arka planı kaldırırsanız, dolguyu da kaldırmanız gerekir.
Michał Kisiel

1
setBackgroundResource (0) en iyi seçenektir çünkü arka planı tamamen kaldırır, dolayısıyla fazla çekimi azaltır.
Milan

4

Bu kodu deneyin:

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

ayrıca bu çalışıyor:

imgView.setImageResource(0); 

ama dikkatli olun, bu işe yaramaz:

imgView.setImageResource(null); 

4

Bu kodu android 4+ için deniyorum :

view.setBackgroundDrawable(0);

View türündeki setBackgroundDrawable (Drawable) yöntemi, bağımsız değişkenler için geçerli değildir (int)
Tobrun

2

Bu yöntemde en iyi performans:

imageview.setBackgroundResource(R.drawable.location_light_green);

Bunu kullan.



0

setBackgroundColor(Color.TRANSPARENT)Arka planı şeffaf olarak ayarlamak için kullanın veya kullanın setBackgroundColor(0). Color.TRANSPARENTRenk sınıfından varsayılan özellik burada . İyi çalışacak.


0

Bir vaka senaryom var ve yukarıdan gelen tüm cevapları denedim, ancak her zaman eskisinin üzerine yeni bir görüntü oluşturuldu. Benim için işe yarayan çözüm şudur:

imageView.setImageResource(R.drawable.image);

0

Mükemmel cevaplara ek olarak, bunu xml aracılığıyla elde etmek istiyorsanız, şunları ekleyebilirsiniz:

android:background="@android:color/transparent

sizin görüşünüze.


0

Öncelikle XML düzeninde yazmanız gerekir:

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

daha sonra bunu Java kullanarak göstermek için bunu kullanın:

myimage.setVisibility(SHOW); //HIDE

Bu ne? Ne için?
CoolMind
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.