suppender of AndroidStudy
12/30/2016 - 1:15 AM

如果您想让 DialogFragment 具有嵌入能力,则必须在布局中定义对话框的 UI,然后在 onCreateView() 回调中加载布局。

如果您想让 DialogFragment 具有嵌入能力,则必须在布局中定义对话框的 UI,然后在 onCreateView() 回调中加载布局。

<!-- Large screen boolean values -->
    <bool name="large_layout">true</bool>
<!-- Default boolean values -->
    <bool name="large_layout">false</bool>
/*以下代码可根据屏幕尺寸决定将片段显示为对话框还是全屏 UI:*/
boolean mIsLargeLayout;

public void onCreate(Bundle savedInstanceState) {

    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);

public void showDialog() {
    FragmentManager fragmentManager = getSupportFragmentManager();
    CustomDialogFragment newFragment = new CustomDialogFragment();
    /*mIsLargeLayout 布尔值指定当前设备是否应该使用应用的大布局设计
    if (mIsLargeLayout) {
        // The device is using a large layout, so show the fragment as a dialog, "dialog");
    } else {
        // The device is smaller, so show the fragment fullscreen
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        // For a little polish, specify a transition animation
        // To make it fullscreen, use the 'content' root view as the container
        // for the fragment, which is always the root view for the activity
        transaction.add(, newFragment)
/*以下示例 DialogFragment 可以显示为对话框或嵌入式片段
(使用名为 purchase_items.xml 的布局)*/
public class CustomDialogFragment extends DialogFragment {
    /** The system calls this to get the DialogFragment's layout, regardless
        of whether it's being displayed as a dialog or an embedded fragment. */
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout to use as dialog or embedded fragment
        return inflater.inflate(R.layout.purchase_items, container, false);

    /** The system calls this only when creating the layout in a dialog. */
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // The only reason you might override this method when using onCreateView() is
        // to modify any dialog characteristics. For example, the dialog includes a
        // title by default, but your custom layout might not need it. So here you can
        // remove the dialog title, but you must call the superclass to get the Dialog.
        Dialog dialog = super.onCreateDialog(savedInstanceState);
        return dialog;