DialogFragment의 제목을 설정하는 방법? 찾을 수 있습니다 .

이것은 간단한 작업이어야하지만 어떤 이유로 DialogFragment 제목을 설정하는 방법을 찾을 수 있습니다 . ( onCreateView오버로드를 사용하여 대화 상자 내용을 설정하고 있습니다 ).

기본 스타일은 제목의 자리를 떠나지 만 DialogFragment클래스 에서 제목 을 설정하는 메소드를 찾을 수 없습니다 .

제목은 onCreateDialog방법을 사용하여 내용을 설정하는 경우 어떻게 든 마술처럼 설정 되므로 이것이 의도 한 것인지 궁금하거나 onCreateView과부하를 사용할 때 설정하는 특별한 트릭이 있는지 궁금합니다 .



답변

당신이 사용할 수있는 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;
    }
    // ...
}


답변

작품 onCreateDialog에서 제목을 재정의 하고 직접 설정 합니까 Dialog? 이처럼 :

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.setTitle("My Title");
    return dialog;
}


답변

제이슨의 대답 은 저에게 도움이되었지만 이제 제목을 표시하려면 다음 추가 사항이 필요합니다.

먼저 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>

여러 가지 다른 일을 시도한 후에, 이것은 나를 위해 트릭을 한 유일한 사람입니다.

NB- Theme.AppCompat.Light.Dialog.Alert테마 스타일에 맞게를 다른 것으로 변경해야 할 수도 있습니다 .


답변

DialogFragment는 대화 및 활동으로 표시 될 수 있습니다. 아래 코드를 모두 사용하십시오.

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


답변

공식 문서를 볼 수 있습니다 . 내가 한 방식은 다음과 같습니다.

@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();
}


답변