我必须在UtteranceProgressListener回调方法中更改FAB状态,但setBackgroundTintColorList()
在setBackgroundTintColorList()
之后调用时不执行任何操作。但是,当我注释掉setBackgroundTintColorList();
setImageResource();
//doesn't work
//setBackgroundTintColorList();
setImageResource();
//Now it works.
时,它会改变src图像。
reviewSentiment == 1;
出了什么问题。
答案 0 :(得分:10)
我遇到了同样的问题-我猜这是一个错误。即使我的Fab可见,也可以在设置前后调用hide()
和show()
,作为解决方法。
fun FloatingActionButton.changeFab(@ColorRes colorRes: Int, @DrawableRes imageRes: Int) {
hide()
backgroundTintList = ContextCompat.getColorStateList(context, colorRes)
setImageResource(imageRes)
show()
}
答案 1 :(得分:0)
只是一个附录:
在我的程序中,FAB是折叠式工具栏的一部分。几次尝试成功后,更改曾经失败的图标,最终以空FAB结束,这可能是由于Google图书馆中的比赛条件错误或状态错误所致。我首先删除了setBackgroundTintList(),但与给出的示例相反,此操作不有效,即FAB仍然是彩色的,但为空。因此,我终于应用了ersin-ertan的出色解决方法,但是在Java中,是这样的:
mFloatingButton.hide();
mFloatingButton.setImageResource(...);
mFloatingButton.setBackgroundTintList(...);
mFloatingButton.show();