Material DesignでActionbar以外のところでもPopupMenuを出すメニューが使われているなと思い調べてみると、API 21からActionMenuViewというのが追加されていました。
AppCompatにも追加されているようで、v7以上で使用できるようです。
(↑みたいなCardViewの要素に置かれてたりしてますね)
使い方
通常のViewのようにxmlで定義することが出来ます。
<android.support.v7.widget.ActionMenuView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/action_menu">
</android.support.v7.widget.ActionMenuView>
setPopupThemeで表示されるメニューのテーマをセットできます。
mActionMenuView.setPopupTheme(R.style.ActionMenuViewStyle);
mActionMenuView.getMenu().add(Menu.NONE, 1, Menu.NONE, "メニュー1");
mActionMenuView.getMenu().add(Menu.NONE, 2, Menu.NONE, "メニュー2");
mActionMenuView.setOnMenuItemClickListener(new ActionMenuView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
int itemId = menuItem.getItemId();
switch (itemId) {
case 1:
// 処理内容
break;
case 2:
// 処理内容
break;
}
return false;
}
});
下のように中の要素の色を変えたい場合どうしたらいいんだろうと悩んでいたのですが、
android:textColorSecondaryをスタイルに設定したら変更できました。
動的に色を変更したい場合ってどうしたらいいんだろう。。。
内部的にはPopupMenuを呼んでるだけみたいなので、自分で作るしかないのかな。。。
参考文献
Android: Changing the Toolbar’s text color and overflow icon color
http://www.murrayc.com/permalink/2014/10/28/android-changing-the-toolbars-text-color-and-overflow-icon-color/
Tweetings for Android and Material Design
http://www.tweetings.net/site/2014/10/tweetings-android-material-design/