takaiwa.net

Android、Java、Web系、Linux、マラソン等の備忘録

2013/08/05

android ListView上にポップアップメニューとUIの葛藤と失敗

0 件のコメント
同じような失敗を繰り返さないよう書き留めておきます。

やりたい事

適当なUIのサンプルがなかったのですが...
こういうドロップダウンなポップアップメニューを、


ListViewの各行に設置して、その行のアイコンをタッチすると表示されるようにしたい。表示するメニューの項目は削除、編集(タイトル変更)という操作など。

このようなポップアップメニューを各行に設けることで、その行に対する操作であることが直感的で分かりやすいのではと思ったからです。
以下、抽象的な話になりますが、
行に対する操作なら、次の点も考えられます。
  • 行をタッチ → 操作用のActivityを起動
    • →そのActivity内に削除・編集のトリガーを設ける
    • →もしくはそのActivityのメニューに削除・編集トリガーを設ける
  • ListViewの子要素に削除・編集トリガを設ける
既に行をタッチでActivityを起動するようにしており、そこにListViewの行の操作をもってくるのは誤解を招きそう。またListViewの子要素は見た目も素直で良いのですが、子要素で操作というのは違和感があるので、どうにかポップアップメニューで考えてみたいと思います。

どうやって実装?

AndroidにPopupMenuというのがあって、これを実現するのに良さそうなのですが、
・PopupMenu | Android Developers
http://developer.android.com/reference/android/widget/PopupMenu.html
APIがLevel11以上....

もうそれなら、Level11(バージョン3.0)以前は利用できないアプリとして考えたのですが、このブログ書いてる最近の記事の利用状況では、
・Google、Androidバージョン別シェアでJelly Beanが40.5%の大台に到達 | 携帯 | マイナビニュース
http://news.mynavi.jp/news/2013/08/04/008/index.html
Level15以上(バージョン4.x系)のシェアが増えつつあるものの、Level10(バージョン2.3.3 - 2.3.7)も未だに33%もあり、また、この1つの機能のために、この33%の方々にゴメンネーするのは気が引け、何かいい方法はないかと模索したところ、似たようなSpinnerで実装してみることにしました。