TextView Drawable compat возвращает значение null - PullRequest
1 голос
/ 09 июля 2020

My TextView имеет связанный с ним значок Drawable, как показано ниже:

<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/tvProfile"
    android:drawableStart="@drawable/ic_menu_profile" />

при попытке подкрашивать / раскрашивать во время выполнения вытяжной компакт textView, приведенная ниже попытка возвращает значение null. Но android:drawableLeft возвращает экземпляр с возможностью рисования.

tvProfile.compoundDrawables[0]?.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)

Интересно какое-нибудь решение с android:drawableStart?

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

Используйте метод compoundDrawablesRelative:

tvProfile.compoundDrawablesRelative[0]?.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)

Вы можете проверить do c:

Возвращает чертежи для границ start, top, end и bottom.

, а getCompoundDrawables возвращает чертежи для left, top, right , и bottom границы.

0 голосов
/ 09 июля 2020

Вы можете добиться этого на kotlin:

fun TextView.setDrawableColor(@ColorRes color: Int) {
      compoundDrawables.filterNotNull().forEach {
          it.colorFilter = PorterDuffColorFilter(getColor(context, color), PorterDuff.Mode.SRC_IN)
    }
}
...