Как установить заголовок DialogFragment?
это должно быть простой задачей, но по какой-то причине я могу найти способ, чтобы установить заголовок DialogFragment. (Я устанавливаю содержимое диалогового окна с помощью onCreateView
перегрузка).
стиль по умолчанию оставляет место для заголовка, но я не могу найти любой способ на DialogFragment
класс для его установки.
название каким-то волшебным образом установить, когда onCreateDialog
метод используется для установки содержимого, поэтому мне интересно, если это по дизайну, или есть специальный трюк, чтобы установить его при использовании onCreateView
перегрузка.
5 ответов:
можно использовать
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);
тогда, в ваших стилях.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
к чему-то еще, чтобы соответствовать стиль вашей темы.
вы можете взглянуть на официальные документы. Кстати я сделал так:
@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(); }
DialogFragment может быть представлен как диалог и как деятельность. Используйте код ниже, который будет работать правильно для обоих
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (getShowsDialog()) { getDialog().setTitle(marketName); } else { getActivity().setTitle(marketName); } }