Fab на сворачивающейся панели инструментов не показывает значок при изменении после скрытия поведения

У меня есть FAB, привязанный к сворачивающейся панели инструментов, поэтому, когда панель инструментов сворачивается, FAB скрывается, когда я нажимаю FAB, значок переключается правильно, но после прокрутки и FAB скрываются, когда я пытаюсь изменить значок, он исчезает, но когда я рушусь и разверните панель инструментов, значок отображается правильно, также я попытался сделать недействительным

Я попытался изменить значок с помощью ресурса и возможности рисования, но получил тот же результат

Вот гифка с проблемой: https://media.giphy.com/media/1zKOxmWQ8IIpFgtvPM/giphy.gif

Вот что у меня сейчас:

fun setFABState(isFav: Boolean, isSeeing: Boolean = false) {
    launch(UI) {
        fab.setImageDrawable(when {
            isFav && isSeeing -> drawableStarHeart
            isSeeing -> drawableHalfStar
            isFav -> drawableHeartFull
            else -> drawableHeartEmpty
        })
        fab.invalidate()
    }
}

Пожалуйста, опубликуйте, что вы пробовали до сих пор

Ayush Khare 26.10.2018 05:15

Ну, некоторые действительно простые вещи, setImageResource () и setImageDrawable ()

Jordy Mendoza 26.10.2018 05:19

Вы наконец нашли решение этой проблемы?

Oleh Liskovych 28.05.2019 15:34

@ user3400881 да, я обновил библиотеку материалов до последней версии

Jordy Mendoza 29.05.2019 18:23
1
4
135
2

Ответы 2

Единственная возможность, которую я мог видеть, это то, что он заканчивается в else -> drawableHeartEmpty. Выполните отладку и проверьте, ложны ли оба флага (isFav, isSeeing).

Да, там вся логика работает нормально, когда активность открывается, она меняется нормально, с любым из 4 значков

Jordy Mendoza 27.10.2018 02:14

Попробуйте вытащить оператор ветвления из параметров метода. У меня раньше была какая-то проблема с оператором if-else.

fun setFABState(isFav: Boolean, isSeeing: Boolean = false) {
    launch(UI) {
        val icon = when {
            isFav && isSeeing -> drawableStarHeart
            isSeeing -> drawableHalfStar
            isFav -> drawableHeartFull
            else -> drawableHeartEmpty
        } 
        fab.setImageDrawable(icon)
    }
}

Нет, такая же проблема

Jordy Mendoza 27.10.2018 02:34

Другие вопросы по теме