2010-03-30 20 views
14

Tôi có một bố trí với một ImageView được xác định như sau:Cách sử dụng ColorDrawable với ImageView?

<ImageView 
    android:layout_width="45dip" 
    android:layout_height="45dip" 
    android:scaleType="fitXY" /> 

bây giờ tôi chỉ muốn thiết lập các ImageView là một màu tĩnh, giống như màu đỏ hoặc màu xanh lá cây. Tôi đang thử:

ColorDrawable cd = new ColorDrawable("FF0000"); 
cd.setAlpha(255); 
ImageView iv = ...; 
iv.setImageDrawable(cd); 

chế độ xem ảo chỉ trống, không có màu. Không gian 45dip đang được sử dụng hết. Tôi cần phải làm gì để có được màu sắc được hiển thị?

Cảm ơn

Trả lời

26

Nhìn vào hàm tạo cho ColorDrawable Tôi không thấy phiên bản có chuỗi như trong ví dụ của bạn. Tôi thấy một trong đó có một int. Hãy thử điều này:

ColorDrawable cd = new ColorDrawable(0xffff0000); 

Chú ý Tôi đã sử dụng 8 chữ số thập phân, chứ không phải 6 như trong ví dụ của bạn. Điều này cũng đặt giá trị alpha.

Chỉnh sửa: Nhìn lại một số mã của riêng tôi, nơi tôi đã làm điều tương tự, tôi luôn sử dụng setBackgroundDrawable() thay vì setImageDrawable() để khởi tạo ImageView với màu đồng nhất. Không chắc liệu điều đó có tạo nên sự khác biệt hay không.

+0

Cảm ơn màu sắc mà tôi đã cung cấp đã tắt, tôi đã sử dụng Color.parseColor() và giờ nó hoạt động. – user246114

+5

nếu bạn muốn sử dụng bộ chọn có màu (không thể kéo) theo chương trình bạn có thể sử dụng: 'ColorDrawable cd = new ColorDrawable (Màu sắc.parseColor (" # FFEDCACA ")); ' – Houcine

+0

cho bất kỳ ai tìm cách đặt màu đồng nhất thành có thể vẽ được (như tôi), dễ sử dụng hơn imageView.setBackgroundColor() –

Các vấn đề liên quan