Trong một ứng dụng tôi đã xây dựng, tôi nhận thấy rằng ImageViews không được tô màu trên các thiết bị chạy Android Lollipop mới. Đây là mã được sử dụng để làm việc một cách chính xác trên các phiên bản cũ của hệ điều hành:Tinting ImageView không hoạt động trên Android 5.0. Ý tưởng làm thế nào để làm cho nó hoạt động trở lại?
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="bottom|right"
android:contentDescription="@string/descr_background_image"
android:src="@drawable/circle_shape_white_color"
android:tint="@color/intent_circle_green_grey" />
và đây là drawable được nạp trong ImageView:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
<gradient android:startColor="@color/white" android:endColor="@color/white"
android:angle="270"/>
</shape>
Một lần nữa, điều này đang làm việc một cách chính xác trên các thiết bị chạy Jellybean/Kitkat, nhưng tông màu không ảnh hưởng đến các thiết bị chạy Lollipop. làm thế nào để khắc phục các ý tưởng đó? Nó có phải là một lỗi trong hệ điều hành, hay tôi nên bắt đầu pha màu ảnh khác nhau?
Lỗi hệ điều hành đã được khắc phục cho bản phát hành trong tương lai. Thuộc tính tint của ImageView đã được cập nhật để sử dụng Drawable.setTint() thay vì Drawable.setColorFilter(), nhưng GradientDrawable không hỗ trợ setTint(). Không thực sự là một giải pháp tốt cho điều này từ XML, nhưng bạn có thể gọi setColorFilter() từ mã. – alanv
Thật tuyệt vời khi biết rằng bạn đã quan tâm đến nó! Cảm ơn câu trả lời :) –