안드로이드에서 프로그래밍 방식으로 백그라운드 드로어 블 제거


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
이 오류가 발생합니다 :보기 형식의 setBackgroundResource (int) 메소드는 인수 (null)에 적용 할 수 없습니다
UKDataGeek

2
작동하지 않는 경우 : android : src가 아닌 background 속성을 사용했는지 확인하십시오!
Chris Conway

3
setBackgroundDrawable은 더 이상 사용되지 않습니다. 아래 @Suraj의 답변이 더 좋습니다.
Anand Sainath

6
API 16? API 8에 대한 것이 있습니까?
user1940676

1
setBackgroundResource (0)를 사용하십시오. 의해 답변으로 @AdamStelmaszczyk. ,
자르 E Ahmer

70

setBackgroundResource(0)최선의 선택입니다. 로부터 문서 :

주어진 자원으로 배경을 설정하십시오. 자원은 Drawable 객체를 참조하거나 0을 제거하여 배경을 제거해야합니다 .

API 1 이후로 어디서나 작동합니다.

setBackgroundAPI 16에서 훨씬 나중에 추가되었으므로 minSdkVersion16보다 낮 으면 작동하지 않습니다 .


2
고마워요. 4 시간 동안 머리를 두드리고 나면 저를 구했습니다. 이것은 onClick 이벤트에서 토글 된 버튼 (드로어 블 2 개 선택)을 동적으로 생성하지만 토글 된 버튼이 인계하기 전에 표시 할 버튼이 필요한 경우에 매우 유용합니다 (클릭 이벤트가 발생할 때까지 아무것도 표시되지 않으므로 setBackgroundResource(0)이전 "세트"버튼 드로어 블을 제거 하는 데 사용할 수 있습니다 ).
Azurespot

2
메모리 관리 및 API 수준 지원 측면에서 최상의 솔루션이므로 선택해야합니다.
gregtczap

47

이것은 배경색을 제거하는 데 도움이되었으며 누군가에게 도움이되기를 바랍니다. setBackgroundColor(Color.TRANSPARENT)


3
드로어 블에는 패딩이있을 수 있으므로 배경을 제거하면 패딩도 제거해야합니다.
Michał Kisiel

1
setBackgroundResource (0)은 배경을 완전히 제거하여 오버 드로우를 줄이므로 최상의 옵션입니다.
Milan

4

이 코드를 사용해보십시오 :

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

또한 이것은 작동합니다 :

imgView.setImageResource(0); 

그러나 이것이 작동하지 않도록주의하십시오.

imgView.setImageResource(null); 

4

나는 안드로이드 4 이상 에서이 코드를 시도 :

view.setBackgroundDrawable(0);

보기 유형의 setBackgroundDrawable (Drawable) 메소드는 인수 (int)에 적용 할 수 없습니다.
Tobrun

2

이 방법에서 최고의 성능 :

imageview.setBackgroundResource(R.drawable.location_light_green);

이것을 사용하십시오.


1

이것은 나를 위해 작동합니다 :

yourview.setBackground(null);

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.