이것은 간단한 작업이어야하지만 어떤 이유로 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();
}