浮いたボタンパーツである「FloatingActionButton(FAB)」はImageViewの子供で、setImageResourceメソッドが使えるので
例えば、こんな感じで、FABをクリックしたら画像を切り替えることができるはずなのですが、
if (isSoundEnabled!!) { floatingActionButton.setImageResource(R.drawable.ic_volume_up_black_24dp) } else { floatingActionButton.setImageResource(R.drawable.ic_volume_off_black_24dp) }
なぜか、こんな感じで画像が切り替わってくれない(FloatingActionButton#setImageResourceが効いてくれない)場合があります。
FABを一旦消して(hide)再表示させる(show)とうまくいくらしい
公式ドキュメントで記述が見つけられなかったので、このサイトを参考にさせて頂きました。
おそらくバグではないかとのことですが、解決策としては、表示されているFloatingActionButton(FAB)を一旦消して、再表示させると画像がちゃんと表示されるようになる(setImageResourceメソッドが効く)ようになるそうです。
if (isSoundEnabled!!) { floatingActionButton.apply{ hide() ← 一旦消して(隠して) setImageResource(R.drawable.ic_volume_up_black_24dp) ← 画像をセットしてから show() ← 再表示させる } } else { floatingActionButton.apply{ hide() setImageResource(R.drawable.ic_volume_off_black_24dp) show() } }
こんな感じで。
(詳しくは下の動画で解説していますので、よろしければご覧ください)