0

我正在尝试对活动进行自定义对话并能够成功进行对话。

现在我想在单击活动按钮而不是设备后退按钮或外部单击时隐藏对话框。问题是 - 当对话框打开时,活动失去焦点,所以它没有点击按钮(我的想法)

这是对话框类的构造函数-

public CustomDialog(Context context) {

        super(context);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.cus_dialog);
    }

和 xml -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     android:background="@drawable/normal_border"
    android:orientation="vertical"
    android:padding="20dp" >

    <TextView
        android:id="@+id/delete_msg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="@string/delete_msg"
         />

    <LinearLayout
        android:id="@+id/work_phone_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/delete_msg"
        android:layout_margin="10dp"
        android:layout_marginTop="10dp"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/delete_yes_label"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:background="@drawable/normal_border"
            android:text="@string/yes"
            android:textAppearance="@style/labels" />

         <View
            android:id="@+id/gap"
            android:layout_width="0dp"
            android:layout_height="3dp"
            android:layout_weight="2"
           />

       <Button
            android:id="@+id/delete_no_label"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:background="@drawable/normal_border"
            android:text="@string/no"
            android:textAppearance="@style/labels" />
    </LinearLayout>

</RelativeLayout>

我试过了 -

 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

但没有效果。我不知道这里发生了什么。请帮忙

更新- 我在 HTC(android 4.0) 上对其进行了测试,它在此设备上运行良好,但在 android 2.3 上无法运行

4

3 回答 3

2

您无法对 Activity 执行操作,因为一旦您的对话框出现在屏幕上,您的 Activity 就会处于暂停状态。当对话框出现在屏幕上时,您的方法onPause()将被调用,从而在您的对话框关闭后立即停止活动的进一步操作,您的活动方法onResume()被调用并允许活动执行操作。

您可以通过以活动的形式创建自定义对话框来完成此操作,然后在清单文件中将该活动的主题设置为对话框。

像这样

<activity android:theme="@android:style/Theme.Dialog" />

现在,您需要通过传递一个意图来打开此活动,而不是显示一个对话框,您的活动将以对话框的形式显示在以前的活动之上。

现在,当您运行此程序时,您将观察到您的对话框何时出现onPasue(),当对话框关闭时,您的活动的方法onResume()将被调用。

于 2013-11-08T07:00:11.543 回答
1

它只有一行代码试试这个..

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout.xml);

    this.setFinishOnTouchOutside(false);
于 2017-07-26T09:36:30.843 回答
0
android 4.0 Dialog gets canceled when touched outside of dialog window

尝试使用setCanceledOnTouchOutside(布尔取消)方法并enable/disable在对话框窗口外触摸时将布尔值传递给对话框行为。

并进一步检查这个

于 2013-11-08T07:28:15.340 回答