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