我有一个Activity A,在视图中有一个按钮B。 如果有人按下B,我希望有一个弹出窗口可以占据屏幕的某个部分,使得A在该区域不可见,但是A的其余部分是可见但不活动的。如何实现这一点?
我有一个Activity A,在视图中有一个按钮B。 如果有人按下B,我希望有一个弹出窗口可以占据屏幕的某个部分,使得A在该区域不可见,但是A的其余部分是可见但不活动的。如何实现这一点?
如果您想使用Activity而不是对话框来实现此操作,可以在清单文件中将Activity的主题设置为android:theme="@android:style/Theme.Dialog"
- 这将使Activity看起来像一个对话框(浮动在其下方的任何东西之上)。
对于AppCompat,添加
android:theme="@style/Theme.AppCompat.Dialog.Alert"
到AndroidManifest中的活动
对于 appcompat,可以在清单文件中使用此选项。
<activity android:theme="@style/Theme.Base.AppCompat.Dialog.FixedSize" >
</activity>
补充一下 oli 的回答,确保在应用程序中使用的主题中使用对话框。
在我的情况下,我使用了 android:theme="@android:style/Theme.Holo.Light.Dialog"
将主题设置为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>
0
,并在开头添加了一个子布局,使用alpha属性显示前一个活动的某些部分。如果你正在使用Material Design,你应该使用@android:style/Theme.Material.Dialog.NoActionBar
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>
在你的Activity中
MyDialog myDialog = new MyDialog(MainActivity.this);
myDialog.showDialog("Say Hello to Me");
关闭
myDialog.dimiss();
android:label="自定义标题栏"
。 - TheLogicGuy