如何设置DialogFragment的标题?

这应该是一个简单的任务,但由于某种原因,我可以find一种方法来设置一个DialogFragment的标题。 (我使用onCreateView重载设置对话框内容)。

默认样式为标题留下了一个位置,但在DialogFragment类中找不到任何方法来设置它。

onCreateDialog方法被用来设置内容的时候,标题被神奇地设置了,所以我想知道这是否是devise,或者在使用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> 

经过几个小时尝试不同的事情,这是唯一一个做了我的伎俩。

注意 – 您可能需要将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(); }