コンテキストメニューにも飾りっ気を

  • 投稿日:
  • by
  • カテゴリ:

image

Androidのアプリが、見栄えという点で、時として、iPhoneのアプリより劣って見えるのは、やはり、基本的なパーツの作り込みが甘いせいではないかと思うのです。

そのひとつが、コンテキストメニュー。リストのアイテムを長押ししたりすると出てくることがある、アレです。

右は、その、コンテキストニューなのです。メニューの項目は、ラベルを持つことができるほか、チェックボックスやラジオボタンをつけることもできます。

が、色気を出そうと、アイコンをつけようと、メニューアイテムにsetIcon()をして、アイコンを設定しても、コンテキストメニューの場合は、これがものの見事に無視されてしまうのです。

しかし、待てよ? 多くのアプリや、あろうことか、Google自身が提供している、ホーム画面や、あるいはインテントによる、レシーバの選択メニューなどは、アイコン付じゃないですか。それ、僕も使いたい。

image

と、思って調べていたら、Googleは「できません」と、とりつく島もない状態だったのですが、いくつか、そういう機能を実現するライブラリが存在していることが判りました。そのうちのひとつ、IconContextMenuを試してみました。

まあ、メニューではなく、長押しされたら、メニューっぽいダイアログを表示して、メニューに代えているだけなのですが、それでも充分です。

ほら、アイコンがつくだけで、ぐっと、メニューがおしゃれになるじゃないですか。というか、Googleだって、こういう機能を使っているんだから、そもそもの、コンテキストメニューがこういうことできるようになっていないのがおかしいんですけれどね。こういうところが、甘いし、だから、アプリの見栄えが、やや落ちるような感じになってしまいがちなんですよ……。

なお、このライブラリ。呼び出されたダイアログの側で、リスト中のどれがクリックされて呼び出されたのかを知る術がないので、創意工夫が必要になります。それはまた別途。