Androidのアプリ開発関連のブログ

アプリアイコンにメニュー

制作中のテキストエディターで、アプリアイコン(アプリタイトル)部分をクリックするとプルダウンメニューを出してタブUIのエディタの様に複数ファイルを切り替えられるようにしようとしていたが、
アプリアイコン部分をメニューにする方法がちょっとわかりにくかった。

まず、onCreateで、
getActionBar().setHomeButtonEnabled(true);
を設定しないとAndroidのバージョンによってはアプリアイコン部分がボタンにならない。
これは前のブログエディターでも使ってたからわかってた。

アプリアイコン部分がボタンになると、onMenuItemSelectedでタッチ時の処理ができ、
その場合はアプリアイコン部分のMenuItem.getItemId()はandroid.R.id.homeになる。
    public boolean onMenuItemSelected(int featureId,MenuItem item){
        if(item.getItemId()==android.R.id.home){
           処理
            return true;
        }
        return false;
    }
こんな感じでアプリアイコン部分がタッチされた時の処理が書けるわけだが、


    public boolean onMenuItemSelected(int featureId,MenuItem item){
        if(item.getItemId()==android.R.id.home){
            PopupMenu popup=new PopupMenu(this,findViewById(android.R.id.home));
            popup.getMenu().add("test");
            popup.show();
            return true;
        }
        return false;
    }
android.widget.PopupMenuを使うとプルダウンメニューが出せる。

android.widget.PopupMenuの使い方は、
android.widget.PopupMenu(Context context,View anchor);
で、2番目の引数でViewを渡すが、
popup.show();
した時に、設定したViewの直下にメニューが表示される。
メニューに対してサブメニューを作る感じではなくて、なんでもいいからViewに対して設定して、ポップアップする際の位置が設定したViewの位置になる感じ。
popup.getMenu()
でMenuが取得できるんで、普通にadd()で項目の追加ができる。

メニューは事前に作るものだと思ってたからちょっとわかりにくかったんだが、
ボタンタッチ等のアクション時にメニューを作成して、そのViewに対してshow()で即表示させられて便利だね。


PopupMenuで目的通りのことができそう。

今日は、予定してたファイル読み込み処理の分離をやって、
編集ファイルの切り替えができる仕様だと複数ファイルを読み込んで状態維持しなきゃいけないことに気づいたんで、複数ファイルを記録して管理できるようにした。
あとは上記のPopupMenuで切り替えられるようにして、保存できるように。

当初考えていたよりだいぶ時間かかっちゃってるが、今週中にはテキストエディタとして最低限の機能は持った状態になるかな。
保存機能がまだないからなw