Android

Floating Action Button のちょっとした落とし穴

Material Design に登場した部品で一番感動したのは、Floating Action Button(通称、FAB)である。

スマートフォン端末が大型化する中、頻繁に押される追加ボタンがツールバー(iOS では、ナビゲーションバー)上にあると指が届かなくて困る、というシーンが多く見られた。それを解決するために、FAB は右下の指の届きやすい位置に配置されている。

iOS アプリでは Material Design のように明快なルールがないから、タブバー上に追加(投稿)ボタンを埋め込んだりだとか(Instagram)、リスト内から投稿画面を呼び出せるような UI にしている(Facebook)。

さて、Android アプリに、FAB を採用する際に考えておくことがひとつある。デザイン段階で気付きにくいのだが、リストの最下部までスクロールした時に、リストの項目と FAB がかぶることだ。項目の右側をユーザーに確実に読ませたい時は、困ったことになる。

これを回避することに決めたら、ListView の下部に余白を設けることになるだろう。実装のアプローチとしては、2 通りある。

  • ListView に paddingBottomclipToPadding=false を指定する
  • ListView.addFooterView()で余白のあるビューを追加する

ちなみに、Android Design Support Library で FAB がサポートされたのだが、以前試した段階では、Lolipop 以降でも影が落ちなかったり、丸にならなかったりといったバグがあったため、今のところは独自で実装している。