Xóa nền có thể vẽ được lập trình trong Android


128

Tôi muốn loại bỏ nền có thể vẽ @drawable/bglập trình. Có cách nào làm được việc này không?

Hiện tại, tôi có XML sau đây trong bố cục của mình:

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

Câu trả lời:


316

Thử cái này

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

Kiểm tra các hàm setBackground trong tài liệu RelativeLayout


4
Tôi gặp lỗi này: Phương thức setBackgroundResource (int) trong kiểu Xem không áp dụng cho các đối số (null)
UKDataGeek

2
Trong trường hợp không hoạt động: kiểm tra xem bạn đã sử dụng thuộc tính nền và không phải android: src!
Chris Conway

3
setBackgroundDrawable hiện không được chấp nhận. Câu trả lời dưới đây của Suraj tốt hơn bây giờ.
Anand Sainath

6
api 16? Có gì cho api 8 không?
dùng1940676

1
Sử dụng setBackgroundResource (0). như đã trả lời bởi @AdamStelmaszchot. ,
Zar E Ahmer

70

setBackgroundResource(0)là lựa chọn tốt nhất. Từ tài liệu :

Đặt nền cho một tài nguyên nhất định. Tài nguyên nên tham chiếu đến một đối tượng Drawable hoặc 0 để xóa nền .

Nó hoạt động ở mọi nơi, vì đó là API 1.

setBackgroundđã được thêm vào sau đó, trong API 16, vì vậy nó sẽ không hoạt động nếu giá trị của bạn minSdkVersionthấp hơn 16.


2
Cảm ơn bạn, hoàn toàn cứu tôi sau 4 giờ đập đầu. Điều này rất hữu ích trong trường hợp bạn tự động tạo nút bật tắt (lựa chọn 2 ngăn kéo) trong một sự kiện onClick, nhưng cần một nút hiển thị để hiển thị trước khi các nút được bật của bạn tiếp tục (vì sẽ không có gì hiển thị cho đến khi sự kiện nhấp xảy ra, vì vậy khi nó xảy ra không, bạn có thể sử dụng setBackgroundResource(0)để loại bỏ nút "set" trước đó của mình.
Azurespot

2
Đây nên là câu trả lời được lựa chọn bởi vì nó là giải pháp tốt nhất cả về quản lý bộ nhớ và hỗ trợ mức độ api.
gregtczap

47

Điều này giúp tôi loại bỏ màu nền, hy vọng nó sẽ giúp được ai đó. setBackgroundColor(Color.TRANSPARENT)


3
Drawables có thể có phần đệm, vì vậy nếu bạn loại bỏ nền, bạn cũng cần loại bỏ phần đệm.
Michał Kisiel

1
setBackgroundResource (0) là tùy chọn tốt nhất bởi vì, nó loại bỏ hoàn toàn nền do đó, giảm việc rút tiền.
Milan

4

Hãy thử mã này:

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

cũng cái này hoạt động:

imgView.setImageResource(0); 

nhưng hãy cẩn thận cái này không hoạt động:

imgView.setImageResource(null); 

4

Tôi thử mã này trong Android 4+ :

view.setBackgroundDrawable(0);

Phương thức setBackgroundDrawable (Drawable) trong loại Chế độ xem không áp dụng cho các đối số (int)
Tobrun

2

Hiệu suất tốt nhất trên phương pháp này:

imageview.setBackgroundResource(R.drawable.location_light_green);

Dùng cái này.



0

Sử dụng setBackgroundColor(Color.TRANSPARENT)để đặt nền là trong suốt, hoặc sử dụng setBackgroundColor(0). Đây Color.TRANSPARENTlà thuộc tính mặc định từ lớp màu. Nó sẽ hoạt động tốt.


0

Tôi có một kịch bản trường hợp và tôi đã thử tất cả các câu trả lời từ trên, nhưng luôn luôn hình ảnh mới được tạo trên đầu trang cũ. Giải pháp hiệu quả với tôi là:

imageView.setImageResource(R.drawable.image);

0

Ngoài các câu trả lời tuyệt vời, nếu bạn muốn đạt được điều này qua xml thì bạn có thể thêm:

android:background="@android:color/transparent

để xem của bạn.


0

Đầu tiên, bạn phải viết theo bố cục XML:

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

sau đó sử dụng cái này để hiển thị nó bằng Java:

myimage.setVisibility(SHOW); //HIDE

Nó là gì? Để làm gì?
CoolMind
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.