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

只关注对话框,而不是android中的背景布局,android,android-alertdialog,Android,Android Alertdialog,我如何在android中创建一个对话框,除非用户点击对话框中的按钮,否则该对话框始终处于焦点状态 对话框的行为类似于一个弹出窗口,在不关闭它的情况下,单击背景布局将禁用该对话框。示例代码,您可以在活动中试用 您可以找到文档 为什么不创建自己的对话框 final Dialog dialog = new Dialog(DialogBoxActivity.this); dialog.setContentView(R.layout.maindialog);

我如何在android中创建一个对话框,除非用户点击对话框中的按钮,否则该对话框始终处于焦点状态


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

示例代码
,您可以在活动中试用

您可以找到文档


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

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>


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

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

代码:

也可以通过按BackPress键将另一个属性设置为“停止关闭”对话框

代码:

希望它能帮助你

评论我的任何疑问


喜欢编码。:)

能给我们一些密码吗?我认为Alert dialogbox默认拥有这些属性是的,@imrankhan是对的。警报对话框实际上具有相同的属性。imm。。因为我使用AlertDialogBuilder并对自定义布局进行充气。但是如果我点击alertbox外部的区域,对话框就会消失并返回到背景布局。因此,我希望确保用户在返回到后台布局之前使用对话框进行一些输入。@kitokid:然后您可以为AlertDialogBuilder设置一些属性,如onTouch或on Backpressed,以便按自己的方式处理。谢谢。我只需要.setCancelable(false)。我将在4分钟后接受您的回答。@kitokid我不知道您的代码中缺少什么,所以我为对话框构造编写了整个代码片段。:)
<?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>
dialog.setCanceledOnTouchOutside(false); // Where dialog is the object of your AlertDialog
dialog.setCancelable(false);