只关注对话框,而不是android中的背景布局

时间:2012-11-20 06:04:59

标签: android android-alertdialog

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

该对话框的行为类似于弹出窗口而不关闭它,它将在单击背景布局时禁用。

3 个答案:

答案 0 :(得分:1)

如果您在对话框外触摸时取消了AlertDialog,则只需将此代码放入AlertDialog即可通过外部触摸取消该代码。

代码:

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

您还可以通过BackPress键

设置另一个属性来停止关闭对话框

代码:

dialog.setCancelable(false);

希望它会对你有所帮助。

评论我的任何查询。

享受编码。 :)

答案 1 :(得分:0)

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

您可以找到文档here

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();

答案 2 :(得分: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>

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