[Android]FloatingActionButtonを押してもアイコン画像が変わらない場合の対処法

浮いたボタンパーツである「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()
    }
}

 

こんな感じで。

(詳しくは下の動画で解説していますので、よろしければご覧ください)

こんな記事も読まれています

おすすめコンテンツ




Flutter(フラッター)


みんプロ作成アプリ




TOP