0

除非用户单击对话框中的按钮,否则如何在 android 中创建一个始终聚焦的对话框?

该对话框的行为就像一个弹出窗口,如果不关闭它,它将在单击背景布局时禁用。

4

3 回答 3

1

如果您在对话框外部触摸时您的 AlertDialog 被取消,那么只需将此代码放入您的 AlertDialog 以阻止它通过外部触摸取消。

代码:

dialog.setCanceledOnTouchOutside(false); // Where dialog is the object of your AlertDialog

您还可以通过 BackPress 键设置另一个属性以停止关闭对话框

代码:

dialog.setCancelable(false);

希望它会帮助你。

如有任何疑问,请评论我。

享受编码。:)

于 2012-11-20T06:22:34.023 回答
0

Sample Code您可以在活动中尝试。

你可以在这里找到文档

Dialog myDialog =   new AlertDialog.Builder(getActivity())
                    .setIcon(R.drawable.alert_dialog_icon)
                    .setTitle(title)
                    .setCancelable(false)
                    .setPositiveButton(R.string.alert_dialog_ok,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                //Do your stuff
                            }
                        }
                    )
                    .setNegativeButton(R.string.alert_dialog_cancel,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                //Do your stuff
                            }
                        }
                    )
                    .create();
于 2012-11-20T06:11:32.640 回答
0

为什么不创建自己的对话框,

final Dialog dialog = new Dialog(DialogBoxActivity.this);
                    dialog.setContentView(R.layout.maindialog);
                    dialog.setTitle("This is dialog box");
                    dialog.setCancelable(true);


                    //set up text
                    TextView text = (TextView) dialog.findViewById(R.id.TextView01);
                    text.setText("Are you sure you want to exit");



                    //set up button
                    Button yes = (Button) dialog.findViewById(R.id.yes);
                    yes.setOnClickListener(new View.OnClickListener() 
                    {
                    @Override
                        public void onClick(View v) 
                        {
                            finish();
                        }
                    });
                    Button no = (Button)dialog.findViewById(R.id.no);
                    no.setOnClickListener(new View.OnClickListener()
                    {
                        @Override
                        public void onClick(View v) 
                        {
                            dialog.dismiss();
                        }
                    });
                    dialog.show();

并将其布局定义为 maindialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >




    <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_width="192dp"
        android:layout_height="48dp"
        android:layout_below="@+id/ImageView01" >

 <TextView android:text="@+id/TextView01" android:id="@+id/TextView01"
 android:layout_width="wrap_content" android:layout_height="wrap_content" />

 </ScrollView>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/yes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="24dp"
        android:text="  Yes  " />

    <Button
        android:id="@+id/no"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="26dp"
        android:layout_toRightOf="@+id/yes"
        android:text="  No   " />

</RelativeLayout>

</LinearLayout>

它将为对话框创建自定义布局,并且只能在单击按钮时关闭。

于 2012-11-20T06:18:21.727 回答