如何设置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(); }