android - 非表示 - dialogfragment 使い方




DialogFragmentのタイトルを設定するには? (4)

DialogFragmentは、ダイアログとアクティビティとして表すことができます。 両方のために適切に動作する以下のコードを使用してください

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    if (getShowsDialog()) {
        getDialog().setTitle(marketName);
    } else {
        getActivity().setTitle(marketName);
    }
}

これは簡単な作業ですが、何らかの理由でDialogFragmentタイトルを設定する方法を見つけることができます。 (私はonCreateViewオーバーロードを使用してダイアログの内容を設定していonCreateView )。

デフォルトのスタイルはタイトルの場所を残していますが、 DialogFragmentクラスのメソッドを見つけることができません。

onCreateDialogメソッドを使用して内容を設定すると、タイトルがどうやら魔法のように設定されるので、これは設計上のものか、 onCreateViewオーバーロードを使用するときに設定する特別なトリックがあるのだろうかと思います。


getDialog().setTitle("My Dialog Title")を使うことができますgetDialog().setTitle("My Dialog Title")

ちょうどこのような:

public static class MyDialogFragment extends DialogFragment {
    ...
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Set title for this dialog
        getDialog().setTitle("My Dialog Title");

        View v = inflater.inflate(R.layout.mydialog, container, false);
        // ...
        return v;
    }
    // ...
}

あなたは公式の文書を見ることができます。 私のやり方は次のようなものです:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
            .setTitle("My Title");
    LayoutInflater inflater = getActivity().getLayoutInflater();
    View view = inflater.inflate(R.layout.my_layout, null);
    builder.setView(view);

    return builder.create();
}

ジェイソンの答えは私のために働いていましたが、今は以下の追加が必要です。

まず、MyDialogFragmentのonCreate()メソッドで、次のように追加します。

setStyle(DialogFragment.STYLE_NORMAL, R.style.MyDialogFragmentStyle);

次に、styles.xmlファイルに次の行を追加します。

<style name="MyDialogFragmentStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">false</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">false</item>
</style>

数時間後に別のものを試してみると、これは私のためにトリックをした唯一のものです。

注意 - あなたのテーマのスタイルに合わせるために、 Theme.AppCompat.Light.Dialog.Alertを別のものに変更する必要があるかもしれません。







android-dialogfragment