如何在其他Activity上弹出一个Activity作为弹出窗口?

时间:2010-07-28 09:31:06

标签: android android-activity

我有一个活动A,视图中有一个按钮B.如果有人按B然后我想要一个弹出窗口,它可以占用屏幕的某些部分,使A在该区域看不见,但A的其余部分是可见但不活跃。我怎样才能做到这一点?

8 个答案:

答案 0 :(得分:64)

如果您想使用Activity而不是Dialog来执行此操作,可以通过在清单中将活动的主题设置为android:theme="@android:style/Theme.Dialog"来实现此目的 - 这将使活动看起来像一个对话框(浮动在顶部)在它下面的任何东西)。

答案 1 :(得分:16)

对于AppCompat,添加

android:theme="@style/Theme.AppCompat.Dialog.Alert"

到AndroidManifest中的活动

答案 2 :(得分:6)

Dialog类非常适合这样做。你可以找到简单的例子here

答案 3 :(得分:3)

只需添加oli的答案,请务必使用您在应用程序中使用的主题中的对话框。

就我而言,我做了android:theme="@android:style/Theme.Holo.Light.Dialog"

答案 4 :(得分:2)

对于appcompat,可以在清单

中使用
<activity android:theme="@style/Theme.Base.AppCompat.Dialog.FixedSize" >
</activity>

答案 5 :(得分:1)

将主题设置为android:theme="@android:style/android:Theme.Holo.Panel"对我有用。

步骤 - 1.将清单文件中活动的主题设置为android:theme="@android:style/android:Theme.Holo.Panel"(必须将其更改为正在使用的任何主题)。例如:

<activity
      android:name=".EditActivity"
      android:theme="@android:style/android:Theme.Holo.Panel"
      android:label="@string/title_activity_edit" >
</activity>
  1. 在活动资源xml中,在根布局上设置适当的填充和宽度。我已将其设置为0并在开头添加了一个带有alpha的子布局,以显示上一个活动的某些部分。

答案 6 :(得分:0)

如果您使用 Material Design ,则应使用@android:style/Theme.Material.Dialog.NoActionBar

答案 7 :(得分:0)

您可以通过编程方式完成

创建类MyDialog

    import android.app.Activity;
    import android.app.Dialog;
    import android.view.Window;
    import android.widget.TextView;

    public class MyDialoge{
        Activity activity;
        TextView txt_Message;
        Dialog dialog;
        public ViewDialog(Activity activity) {

            this.activity = activity;

        }

       public void showDialog(String message){
        dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.custom_progress_dialog);


         txt_Message = dialog.findViewById(R.id.txt_message);
         txt_Message.setText(message);


       //if you want to dimiss the dialog
       //dialog.dimiss()


        dialog.show();

    }
        public void dimiss(){

            try {
                dialog.dismiss();
            } catch (Exception e) {
                e.printStackTrace();
            }


        }



    }

在此之后创建布局->将其命名为 my_dialog

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

        >

       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_centerInParent="true"
           android:text="Hello PopUp Message"/>


    </RelativeLayout>

在您的活动中

MyDialog myDialog = new MyDialog(MainActivity.this);

        myDialog.showDialog("Say Hello to Me");

开除

 myDialog.dimiss();