微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 无时间对话框

有没有办法显示一个无模式的对话框 – 一个对话框,允许用户与对话框之间的任何屏幕进行交互,但还允许用户与对话框进行交互?

我知道吐司,但他们不允许与弹出窗口进行交互.

我知道对话框,但它们是模态的,不允许与背景进行交互.

我知道通知,但我想要的屏幕上是可见的东西.

我基本上想要能够玩一个游戏或什么东西,弹出窗口出现,我有一个新的电子邮件或东西.我可以点击它查看我的电子邮件,但如果我只想继续玩我的游戏,我可以等待它离开.这可能在Android中吗?

解决方法

是的,创建一个具有Style.Dialog风格的活动.这是一个正常的活动,看起来像一个对话框,而无模式和接受事件.

一个例子:

<activity android:name=".activity.dialog.PhotoDialog"
          android:label="@string/photo_dialog_title"
          android:theme="@android:style/Theme.Dialog"/>

编辑:

的确,Theme.Dialog模糊了潜在的活动,使其无法访问.我有一个类似的要求,我必须显示上传进度对话框与文本和取消按钮.主要的是在设置WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL并重置WindowManager.LayoutParams.FLAG_DIM_BEHIND.

创建了一个带有自定义内容的对话框:

if (progressDialog == null) {
            progressDialog = new Dialog(activityRequestingProgressDialog);
            progressDialog.requestwindowFeature(Window.FEATURE_NO_TITLE);
            progressDialog.setContentView(R.layout.progress_upload);
            progressBar = (ProgressBar) progressDialog.findViewById(R.id.progressBar);
            progresstext = (TextView) progressDialog.findViewById(R.id.progresstext);
            progresstext.setText("0 %");
            progresstext.setTextSize(18);
            Button buttonCancel = (Button) progressDialog.findViewById(R.id.btnCancel);
            buttonCancel.setonClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    cancelProgressDialog();
                    stopUpload("Upload cancelled.");
                }
            });
            Window window = progressDialog.getwindow();
            window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
            window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
            window.setGravity(Gravity.BottOM);
            progressDialog.show();
        }

        progresstext.setText(text);
        progressBar.setProgress(percent);

这是这个对话框的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/progressDialog"
          android:orientation="vertical"
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:layout_centerVertical="true">

<TextView android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center"
          android:textSize="18sp"
          android:padding="10dp"
          android:text="@string/progress_title"/>

<LinearLayout android:id="@+id/progressDialog"
              android:orientation="horizontal"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"
              android:padding="10dp"
              android:layout_centerVertical="true">

    <ProgressBar android:id="@+id/progressBar"
                 android:layout_width="150dp"
                 android:layout_height="34dp"
                 android:paddingRight="10dp"
                 android:max="100"
                 android:progress="0"
                 android:fadingEdge="vertical"
                 style="?android:attr/progressBarStyleHorizontal"/>

    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center"
              android:id="@+id/progresstext"
              android:paddingRight="10dp"/>

    <Button android:layout_height="40dp"
            android:layout_width="80dp"
            android:id="@+id/btnCancel"
            android:text="@string/dialog_cancel"/>

</LinearLayout>
</LinearLayout>

原文地址:https://www.jb51.cc/android/311677.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐