私たちのアプリには、フルスクリーンフラグメントまたはダイアログフラグメントとして表示できるフラグメントがいくつかあります。これらのフラグメントはDialogFragment
から継承され、アプリが実行されるモード(フルスクリーンまたはダイアログ)に応じて正しくインスタンス化されるようにします。
Toolbar
ウィジェットの最新の変更がLollipopのサポートライブラリに導入された後、これらのダイアログフラグメントのいくつかにいくつかの追加機能を追加することを検討しました。アイデアは、通常のフラグメントに通常あるタイプのオプションメニュー(つまり、onCreateOptionsMenu
の実行後に膨らんだオプションメニュー)を、これらが視覚化された場合にのみDialogFragment
のサブクラスに存在させることです。ダイアログとして。つまり、フラグメントがフルスクリーンモードで表示される場合は、従来のオプションメニューを膨らませ、フラグメントがダイアログとして表示される場合は、同じオプションメニューを膨らませますが、スタンドアロンモードで新しいツールバーウィジェットを使用します。
http://Android-developers.blogspot.dk/2014/10/appcompat-v21-material-design-for-pre.html の手順に従い、ツールバーを「アクティブ化」することができました。 、しかしメニューが膨らんでいないようです-添付のスクリーンショットを参照してください(フルスクリーンモードの画像1フラグメント、ダイアログモードの画像2)。
DialogFragment
の新しいツールバーでオプションメニューを膨らませることさえ可能ですか?
DialogFragmentの新しいツールバーでオプションメニューを膨らませることさえ可能ですか?
まず第一に、あなたのデザインは大丈夫です、そしてツールバーはどこでも使われることになっていますChris Banesgoogle engineer link :
// Set an OnMenuItemClickListener to handle menu item clicks
toolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Handle the menu item
return true;
}
});
// Inflate a menu to be displayed in the toolbar
toolbar.inflateMenu(R.menu.your_toolbar_menu);
また、Android開発者ツールバースタンドアロンサンプル:
http://Android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
はい、DialogFragmentにはsetHasOptions()関数があります。ダイアログのレイアウトでツールバーを定義し、アクティビティ内にあるかのように使用します。ツールバーは、アクティビティ、フラグメント、またはダイアログフラグメントにあることを気にしません.....。
必ず使用してください
setHasOptionsMenu(true) in onActivityCreated method....
次に、通常どおりオーバーライド
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
}
そして
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}