25
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AndroidのActionMenuViewを使う

Posted at

Material DesignでActionbar以外のところでもPopupMenuを出すメニューが使われているなと思い調べてみると、API 21からActionMenuViewというのが追加されていました。
AppCompatにも追加されているようで、v7以上で使用できるようです。

Rectangle 1.png
(↑みたいな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をスタイルに設定したら変更できました。
actionmenuview.png

動的に色を変更したい場合ってどうしたらいいんだろう。。。
内部的には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/

25
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?