Android在DialogFragment中创建自定义AlertDialog

Android在DialogFragment中创建自定义AlertDialog,android,android-alertdialog,android-dialogfragment,Android,Android Alertdialog,Android Dialogfragment,我正在尝试创建一个AlertDialog,其中包含一个Next和一个Close按钮以及一个“不再显示”复选框。我使用DialogFragment的支持库。以下代码工作正常,但我想在此AlertDialog中使用自己的xml布局: @Override public Dialog onCreateDialog(Bundle savedInstanceState) { int title = getArguments().getInt("num");

我正在尝试创建一个AlertDialog,其中包含一个Next和一个Close按钮以及一个“不再显示”复选框。我使用DialogFragment的支持库。以下代码工作正常,但我想在此AlertDialog中使用自己的xml布局:

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = getArguments().getInt("num");

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

                builder.setTitle("ASDASDAS")
                .setPositiveButton(R.string.hello_world,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((MainActivity)getActivity()).doPositiveClick();
                        }
                    }
                )
                .setNegativeButton(R.string.cancel,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((MainActivity)getActivity()).doNegativeClick();
                        }
                    }
                );
                return builder.create();
    }

是否可以使用我自己的xml布局来创建此AlertDialog?

使用您可以这样使用此对话框:

private void showIconsDlg(final int btnId) {
            // Use a custom style: IconsDialog
    final Dialog dlg = new Dialog(mContext, R.style.IconsDialog);
            // Use a custom layout: 
    dlg.setContentView(R.layout.your_custom_dlg);

    // Find and init Views
    GridView grid = (GridView) dlg.findViewById(R.id.icon_grid);


    grid.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
                            ...

        }
    });

    dlg.show();

}
private void showIconsDlg(最终int btnId){
//使用自定义样式:图标对话框
最终对话框dlg=新对话框(mContext,R.style.IconsDialog);
//使用自定义布局:
setContentView(R.layout.your_custom_dlg);
//查找和初始化视图
GridView网格=(GridView)dlg.findViewById(R.id.icon\u网格);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
...
}
});
dlg.show();
}
这是主题:图标对话框:

<style name="IconsDialog" parent="@android:style/Theme.Dialog">
    <item name="android:backgroundDimEnabled">true</item>
    <item name="android:windowBackground">@drawable/icons_dlg_bg</item>
    <item name="android:windowNoTitle">true</item>
</style>

真的
@可绘制/图标\u dlg\u bg
真的

在R.layout中设置自定义警报布局。自定义警报。这是如何使用自己的xml布局在DialogFragment中创建完全自定义的警报对话框

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    // Get the layout inflater
    LayoutInflater inflater = getActivity().getLayoutInflater();

    // Inflate and set the layout for the dialog
    // Pass null as the parent view because its going in the dialog layout
    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
    // Add action buttons
           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {
                   // sign in the user ...
               }
           })
           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   LoginDialogFragment.this.getDialog().cancel();
               }
           });      
    return builder.create();

看看这个,是的,我终于找到了,但是首先我们必须像马尔科指出的那样扩大视图。我把完整的答案写在下面,谢谢