AppThemeでNoActionBarを指定して、ToolbarにOptionMenuを表示したい

f:id:ryskit:20200108210016p:plain

まだまだAndroid開発のことがわからない、ryskitです。

ActionBarにオプションメニューを表示するには、 onCreateOptionsMenu() をActivityに書いてあげれば表示できると理解していたので書いてみたけど、表示されない。

なんでかなと思ってサクッと調べたことを書きます。

前提

  • styleで Theme.AppCompat.Light.NoActionBar がparentのAppThemeを使用
  • onCreateOptionsMenu() はoverrideしてちゃんと表示できるようにしていた
  • ToolBarをlayout側で定義している

結論

さっそく結論から言うと、styleで Theme.AppCompat.Light.NoActionBar がparentのAppThemeを使っているから、Activity側でToolbarのオブジェクトを setSupportActionBar() にToolbarを渡してあげると表示できた!

ちゃんとGoogleもドキュメント書いてくれてたよ!

developer.android.com

デフォルトのActionBarとToolbarどっち使えば良い?

GoogleさんはデフォルトのテーマのActionBarには機能がドンドン追加されてて、デバイスによって挙動が変わってくると言ってるみたい。

Toolbar のサポート ライブラリのバージョンには最新の機能が追加されており、サポート ライブラリを使用できるすべてのデバイスでこれらの機能を使用できます。 サポートライブラリのツールバーを使用すると、さまざまなデバイスでアプリが一貫して動作するようになります。

あと、上記のようなことも言ってるので、基本的にNoActionBar指定して、Toolbarを使うほうが良さそう。

最後に

Android開発は難しく感じるけど、新しいことをやるのはやはり楽しい! モバイル開発になれてない人は一緒に頑張りましょう!