web-dev-qa-db-ja.com

DialogFragmentのツールバー

私たちのアプリには、フルスクリーンフラグメントまたはダイアログフラグメントとして表示できるフラグメントがいくつかあります。これらのフラグメントはDialogFragmentから継承され、アプリが実行されるモード(フルスクリーンまたはダイアログ)に応じて正しくインスタンス化されるようにします。

Toolbarウィジェットの最新の変更がLollipopのサポートライブラリに導入された後、これらのダイアログフラグメントのいくつかにいくつかの追加機能を追加することを検討しました。アイデアは、通常のフラグメントに通常あるタイプのオプションメニュー(つまり、onCreateOptionsMenuの実行後に膨らんだオプションメニュー)を、これらが視覚化された場合にのみDialogFragmentのサブクラスに存在させることです。ダイアログとして。つまり、フラグメントがフルスクリーンモードで表示される場合は、従来のオプションメニューを膨らませ、フラグメントがダイアログとして表示される場合は、同じオプションメニューを膨らませますが、スタンドアロンモードで新しいツールバーウィジェットを使用します。

http://Android-developers.blogspot.dk/2014/10/appcompat-v21-material-design-for-pre.html の手順に従い、ツールバーを「アクティブ化」することができました。 、しかしメニューが膨らんでいないようです-添付のスクリーンショットを参照してください(フルスクリーンモードの画像1フラグメント、ダイアログモードの画像2)。

DialogFragmentの新しいツールバーでオプションメニューを膨らませることさえ可能ですか?

fullscreen modedialog mode

16
Edu Barbas

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

28
mmlooloo

はい、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);
}
5
Hirak Chhatbar