Как установить название DialogFragment?
Это должна быть простая задача, но по какой-то причине я могу найти способ установить заголовок DialogFragment. (Я устанавливаю содержимое диалогового окна с помощью перегрузки onCreateView
).
Стиль по умолчанию оставляет место для заголовка, но я не могу найти какой-либо метод в классе DialogFragment
для его установки.
Название каким-то образом волшебным образом устанавливается, когда метод onCreateDialog
используется для установки содержимого, поэтому я задаюсь вопросом, является ли это по дизайну, или есть специальный трюк, чтобы установить его при использовании перегрузки onCreateView
.
Ответы
Ответ 1
Вы можете использовать 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;
}
// ...
}
Ответ 2
Переопределяет ли onCreateDialog
и устанавливает заголовок непосредственно на Dialog
? Вот так:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.setTitle("My Title");
return dialog;
}
Ответ 3
Джейсон ответ, который работал у меня, но теперь ему нужны следующие дополнения, чтобы получить название, чтобы показать.
Во-первых, в вашем методе 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
на что-то еще, чтобы соответствовать стилю вашей темы.
Ответ 4
Вы можете посмотреть официальные документы .
То, как я это сделал, выглядит следующим образом:
@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();
}