FloatingActionButtonのBackgroundTintにselectorを使うには
FloatingActionButton
にsetEnabled(false)
とかいう邪道なことをしようとしていて、状態に合わせて色を変えたかったのでcolorリソースのselectorを次のような感じで指定しようとした。
ColorStateList colorList = ContextCompat.getColorStateList(getContext(), R.color.selector); fab.setBackgroundTintList(colorList);
ところが、これでいざenabledをtrueとかfalseに変えてもずっとenabled=falseの色のまま変わらなかった。ボタン自体の状態は変わっているようで、enabled=falseの時はリスナに登録したアクションは起きないし、trueの時はちゃんと起きる。
先にsetBackgroundTintMode(Mode)
を呼ぶといいという情報を見て試したり、ViewCompat.setBackgroundTintList()
を試してみたが効果はなかった。
調べているといろんなバグレポートが見つかるので、いまちゃんと動かないのかなと半ば諦めていたが、layoutリソースにapp:backgroundTint=@color/selector
で指定することで思った通りの動きになった。最初にandroid:backgroundTint
を使おうとしてAPI Level 21以上でしか有効でないという警告が出たのでjavaソースのほうで解決しようとしたのが敗因だった。
app
パッケージの方もサジェストされてほしいものだ。
(support-lib: 24.0.0で確認)