2015-02-26 18 views
6

Tôi đã tìm các bài đăng trả lời vấn đề này, nhưng không ai trong số họ đang làm việc cho tôi, vì vậy tôi nghĩ rằng tôi có một sự hiểu lầm cơ bản về cách hoạt động của nó. Tôi có một ImageButton có một tập tin png áp dụng cho nó. Png chủ yếu là minh bạch với ngoại lệ của một mũi tên màu trắng. Tôi muốn tô màu mũi tên màu đỏ với setColorFilter:Android ImageButton setColorFilter Không hoạt động

imageButton.setColorFilter(Color.argb(255, 225, 0, 0)); 

nhưng điều này không ảnh hưởng. Tôi đã thử phiên bản của setColorFilter với các chế độ Porter-Duff khác nhau, nhưng không ai trong số những người làm việc hoặc. Bất kỳ ý tưởng về những gì vấn đề có thể được hoặc những gì tôi có thể bị mất tích sẽ được đánh giá rất nhiều.

Trả lời

10

Bạn phải lấy Drawable từ nút do setColorFilter bạn đang cố gắng sử dụng (trong thiết lập của bạn) áp dụng cho chúng.

ImageButton btn = (ImageButton) myLayout.findViewByID(R.id.my_button); 

int mycolor = getResources().getColor(R.color.best_color); 

btn.getDrawable().setColorFilter(mycolor, PorterDuff.Mode.SRC_ATOP); 

Chừng nào bạn có tham chiếu chính xác đến một đối tượng drawable,

e.g. textView.getCompoundDrawables()[2].setColorFilter(...);

mà trong xml của nó:

<TextView 
... 
android:drawableLeft="..." 
... 
/> 

bạn có thể sử dụng myDrawableObject.setColorFilter() để ý thích đầy đủ của bạn.

Edit:

Đối ImageButton, đối tượng vẽ cho imageButton.getDrawable() tương ứng với android:src="..." khi imageButton.getBackground() tương ứng với android:background="..." tài sản. Hãy chắc chắn rằng bạn gọi setColorFilter trên chính xác drawable.

+1

Điều này đã giúp ích rất nhiều, nhưng tôi phải sử dụng PorterDuff.Mode.MULTIPLY - drawable.setColorFilter (Color.argb (225, 225, 0, 0), PorterDuff.Mode.MULTIPLY); – Ken

+0

Lấy nét có thể rút ra từ chính chế độ xem làm việc như một nét duyên dáng. –

+0

Lời nhắc của bạn để đảm bảo rằng tôi đã tham chiếu bản vẽ chính xác giúp tôi tìm ra vấn đề của mình - tôi đã đặt drawable là "nền" thay vì "src" trên ImageView của mình. – beyondtheteal

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