Задать цвет для ImageView
У меня есть ImageView, который нужно изменять по цвету в зависимости от входных данных. Сделать это нужно внутри метода OnBindViewHolder (class RecycleView.Adapter). Сам метод:
public void onBindViewHolder(@NonNull @NotNull ViewHolder holder, int position) {
el = elems.get(position);
name.setText(el.name); //это работает, проблем с объявлением быть не должно
date.setText(el.date);
poroda.setText(el.poroda);
switch (el.color){ //переменная color объявлена выше, как ImageView
case("Белый"): color.setBackground(null); break; //тут нужно задавать цвета
case("Синий"): color.setColorFilter(500043); break;
case("Красный"): color.setColorFilter(500056); break;
case("Желтый"): color.setColorFilter(500020); break;
case("Зеленый"): color.setColorFilter(500096); break;
default: break;
}
Верстка ImageView:
<ImageView
android:id="@+id/im_color"
android:layout_width="76dp"
android:layout_height="79dp"
android:layout_marginStart="16dp"
android:layout_marginTop="13dp"
android:background="@drawable/border"
android:backgroundTint="#03A9F4"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars" />
@drawable/border:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:thickness="0dp"
android:shape="rectangle">
<stroke android:width="3dp"
android:color="#0D151C"/>
<corners android:radius="8dp" />
</shape>
Подскажите, пожалуйста, как это лучше реализовать? Спасибо!
Ответы (1 шт):
Автор решения: Barmaley
→ Ссылка
Надо что-то типа:
imageView.setColorFilter(Context.getColor(R.color.white));
При этом в ресурсах надо завести color.xml, навроде:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="yellow">#FFFF00</color>
<color name="fuchsia">#FF00FF</color>
<color name="red">#FF0000</color>
<color name="silver">#C0C0C0</color>
<color name="gray">#808080</color>
<color name="olive">#808000</color>
<color name="purple">#800080</color>
<color name="maroon">#800000</color>
<color name="aqua">#00FFFF</color>
<color name="lime">#00FF00</color>
<color name="teal">#008080</color>
<color name="green">#008000</color>
<color name="blue">#0000FF</color>
<color name="navy">#000080</color>
<color name="black">#000000</color>
</resources>