当前位置: 首页 > news >正文

Android 对话框 - 对话框全屏显示(设置 Window 属性、使用自定义样式、继承 DialogFragment 实现、继承 Dialog 实现)

一、设置 Window 属性

1、Dialog
  • custom_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"android:paddingStart="20dp"android:paddingTop="40dp"android:paddingEnd="20dp"android:paddingBottom="40dp"><TextViewandroid:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="title"android:textSize="25dp" /><TextViewandroid:id="@+id/tv_message"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:gravity="center"android:text="message"android:textSize="20dp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"><android.widget.Buttonandroid:id="@+id/btn_confirm"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginRight="5dp"android:layout_weight="1"android:text="confirm"android:textColor="@color/black" /><android.widget.Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:layout_weight="1"android:text="cancel"android:textColor="@color/black" /></LinearLayout>
</LinearLayout>
2、Test
Dialog dialog = new Dialog(this);dialog.setContentView(R.layout.custom_dialog);TextView tvTitle = dialog.findViewById(R.id.tv_title);
TextView tvMessage = dialog.findViewById(R.id.tv_message);
Button btnConfirm = dialog.findViewById(R.id.btn_confirm);
Button btnCancel = dialog.findViewById(R.id.btn_cancel);
tvTitle.setText("系统提示");
tvMessage.setText("确定退出吗?");
btnConfirm.setOnClickListener(v -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();dialog.dismiss();
});
btnCancel.setOnClickListener(v -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();dialog.dismiss();
});Window window = dialog.getWindow();
if (window != null) {window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}dialog.show();
  • 另一种设置 Window 属性的方式
Dialog dialog = new Dialog(this);dialog.setContentView(R.layout.custom_dialog);TextView tvTitle = dialog.findViewById(R.id.tv_title);
TextView tvMessage = dialog.findViewById(R.id.tv_message);
Button btnConfirm = dialog.findViewById(R.id.btn_confirm);
Button btnCancel = dialog.findViewById(R.id.btn_cancel);
tvTitle.setText("系统提示");
tvMessage.setText("确定退出吗?");
btnConfirm.setOnClickListener(v -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();dialog.dismiss();
});
btnCancel.setOnClickListener(v -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();dialog.dismiss();
});Window window = dialog.getWindow();
if (window != null) {WindowManager.LayoutParams params = window.getAttributes();params.width = WindowManager.LayoutParams.MATCH_PARENT;params.height = WindowManager.LayoutParams.MATCH_PARENT;window.setAttributes(params);
}dialog.show();
<style name="FullScreenDialog" parent="Theme.AppCompat.Light.Dialog"><item name="android:windowFullscreen">true</item><item name="android:windowIsFloating">false</item>
</style>

二、使用自定义样式

1、Style
  • res/values/styles.xml
<style name="FullScreenDialog" parent="Theme.AppCompat.Light.Dialog"><item name="android:windowFullscreen">true</item><item name="android:windowIsFloating">false</item>
</style>
  1. windowFullscreen 设置为 true 强制 Dialog 进入全屏模式

  2. windowIsFloating 设置为 false 告诉系统这个 Dialog 不悬浮,可以占据整个屏幕

2、Dialog
  • custom_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"android:paddingStart="20dp"android:paddingTop="40dp"android:paddingEnd="20dp"android:paddingBottom="40dp"><TextViewandroid:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="title"android:textSize="25dp" /><TextViewandroid:id="@+id/tv_message"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:gravity="center"android:text="message"android:textSize="20dp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"><android.widget.Buttonandroid:id="@+id/btn_confirm"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginRight="5dp"android:layout_weight="1"android:text="confirm"android:textColor="@color/black" /><android.widget.Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:layout_weight="1"android:text="cancel"android:textColor="@color/black" /></LinearLayout>
</LinearLayout>
3、Test
Dialog dialog = new Dialog(this, R.style.FullScreenDialog);dialog.setContentView(R.layout.custom_dialog);TextView tvTitle = dialog.findViewById(R.id.tv_title);
TextView tvMessage = dialog.findViewById(R.id.tv_message);
Button btnConfirm = dialog.findViewById(R.id.btn_confirm);
Button btnCancel = dialog.findViewById(R.id.btn_cancel);
tvTitle.setText("系统提示");
tvMessage.setText("确定退出吗?");
btnConfirm.setOnClickListener(v -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();dialog.dismiss();
});
btnCancel.setOnClickListener(v -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();dialog.dismiss();
});dialog.show();

三、继承 DialogFragment 实现

1、Dialog
  • custom_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"android:paddingStart="20dp"android:paddingTop="40dp"android:paddingEnd="20dp"android:paddingBottom="40dp"><TextViewandroid:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="title"android:textSize="25dp" /><TextViewandroid:id="@+id/tv_message"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:gravity="center"android:text="message"android:textSize="20dp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"><android.widget.Buttonandroid:id="@+id/btn_confirm"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginRight="5dp"android:layout_weight="1"android:text="confirm"android:textColor="@color/black" /><android.widget.Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:layout_weight="1"android:text="cancel"android:textColor="@color/black" /></LinearLayout>
</LinearLayout>
  • FullScreenDialogFragment.java
public class FullScreenDialogFragment extends DialogFragment {private FragmentActivity fragmentActivity;private TextView tvTitle;private TextView tvMessage;private Button btnConfirm;private Button btnCancel;private String titleStr;private String messageStr;private String confirmStr;private String cancelStr;private OnConfirmClickObserver onConfirmClickObserver;private OnCancelClickObserver onCancelClickObserver;public FullScreenDialogFragment(FragmentActivity fragmentActivity,String titleStr,String messageStr,String confirmStr,String cancelStr,OnConfirmClickObserver onConfirmClickObserver,OnCancelClickObserver onCancelClickObserver) {this.fragmentActivity = fragmentActivity;this.titleStr = titleStr;this.messageStr = messageStr;this.confirmStr = confirmStr;this.cancelStr = cancelStr;this.onConfirmClickObserver = onConfirmClickObserver;this.onCancelClickObserver = onCancelClickObserver;}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.custom_dialog, container, false);tvTitle = view.findViewById(R.id.tv_title);tvMessage = view.findViewById(R.id.tv_message);btnConfirm = view.findViewById(R.id.btn_confirm);btnCancel = view.findViewById(R.id.btn_cancel);tvTitle.setText(titleStr);tvMessage.setText(messageStr);btnConfirm.setText(confirmStr);btnCancel.setText(cancelStr);btnConfirm.setOnClickListener(v -> {if (onConfirmClickObserver != null) onConfirmClickObserver.confirm();dismiss();});btnCancel.setOnClickListener(v -> {if (onCancelClickObserver != null) onCancelClickObserver.cancel();dismiss();});return view;}@Overridepublic void onStart() {super.onStart();Dialog dialog = getDialog();if (dialog == null) return;Window window = dialog.getWindow();if (window == null) return;window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);}public void show() {super.show(fragmentActivity.getSupportFragmentManager(), "");}
}
2、Test
FullScreenDialogFragment dialogFragment = new FullScreenDialogFragment(this,"系统提示","确定退出吗?","确定","取消",() -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();},() -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();});dialogFragment.show();

四、继承 Dialog 实现

1、Dialog
  • custom_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"android:paddingStart="20dp"android:paddingTop="40dp"android:paddingEnd="20dp"android:paddingBottom="40dp"><TextViewandroid:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="title"android:textSize="25dp" /><TextViewandroid:id="@+id/tv_message"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:gravity="center"android:text="message"android:textSize="20dp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"><android.widget.Buttonandroid:id="@+id/btn_confirm"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginRight="5dp"android:layout_weight="1"android:text="confirm"android:textColor="@color/black" /><android.widget.Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:layout_weight="1"android:text="cancel"android:textColor="@color/black" /></LinearLayout>
</LinearLayout>
  • FullScreenDialog.java
public class FullScreenDialog extends Dialog {private TextView tvTitle;private TextView tvMessage;private Button btnConfirm;private Button btnCancel;private String titleStr;private String messageStr;private String confirmStr;private String cancelStr;private OnConfirmClickObserver onConfirmClickObserver;private OnCancelClickObserver onCancelClickObserver;public FullScreenDialog(@NonNull Context context) {super(context);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.custom_dialog);tvTitle = findViewById(R.id.tv_title);tvMessage = findViewById(R.id.tv_message);btnConfirm = findViewById(R.id.btn_confirm);btnCancel = findViewById(R.id.btn_cancel);tvTitle.setText(titleStr);tvMessage.setText(messageStr);btnConfirm.setText(confirmStr);btnCancel.setText(cancelStr);btnConfirm.setOnClickListener(view -> {if (onConfirmClickObserver != null) onConfirmClickObserver.confirm();dismiss();});btnCancel.setOnClickListener(view -> {if (onCancelClickObserver != null) onCancelClickObserver.cancel();dismiss();});Window window = getWindow();if (window == null) return;window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);}public void setTitle(String str) {this.titleStr = str == null ? "" : str;}public void setMessage(String str) {this.messageStr = str == null ? "" : str;}public void setConfirm(String str, OnConfirmClickObserver onConfirmClickObserver) {this.confirmStr = str == null ? "" : str;this.onConfirmClickObserver = onConfirmClickObserver;}public void setCancel(String str, OnCancelClickObserver onCancelClickObserver) {this.cancelStr = str == null ? "" : str;this.onCancelClickObserver = onCancelClickObserver;}
}
2、Test
FullScreenDialog fullScreenDialog = new FullScreenDialog(this);fullScreenDialog.setTitle("系统提示");
fullScreenDialog.setMessage("确定退出吗?");
fullScreenDialog.setConfirm("确定", () -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
});
fullScreenDialog.setCancel("取消", () -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
});fullScreenDialog.show();
http://www.dtcms.com/a/490139.html

相关文章:

  • 项目实践1—全球证件智能识别系统(Qt客户端开发+FastAPI后端人工智能服务开发)
  • 源同步接口(六)
  • app 门户网站我在征婚网站认识一个做IT
  • 【FFmpeg】对比 d3d12va 、d3d11va、dxva2 这三种视频硬解方案
  • 苹果iOS开发零基础特训(视频教程)
  • 数字图像相关(DIC)技术在岩石剪切变形测量中的应用研究:全场应变与破坏机制分析
  • 建站工具 开源捷克网站后缀
  • @Resource和@Autowired注入区别
  • 网站设置cookie什么意思以个人名义做地方门户网站
  • 客户案例 | 派克新材x甄知科技,构建全场景智能IT运维体系
  • python基本数据类型、字典、 集合、条件与循环控制、函数(3)
  • 语音处理:wav头格式非44字节场景处理分析
  • git 安全证书 【git】
  • leetcode 168. Excel 表列名称 python
  • LabVIEW 高速采集系统性能优化
  • 忻州建设公司网站临汾做网站的公司
  • 书籍学习|基于SprinBoot+vue的书籍学习平台(源码+数据库+文档)
  • PNNX + TorchScript + 手动修改后处理逻辑,最终输出适配 NCNN官方 yolov8.cpp
  • 记录小程序真机bug,而模拟器无法复现
  • 【iOS取证篇】浅谈iPhone手机的失窃设备保护功能
  • Qoder 全栈Ai工具
  • 数据库—数据库设计 多表查询 事务
  • php网站开发如何赚钱新发地网站建设
  • 多合一建网站数码电子产品网站建设策划书
  • Spring Boot + Kafka 全面实战案例
  • MATLAB基于GWO-BP神经网络对某拨叉件锻造金属流动性的参数分析
  • 建网站教学视频wordpress外汇
  • Ubuntu-8卡H20服务器升级nvidia驱动+cuda版本
  • 2.6 代码注释与编码规
  • html css js网页制作成品——饮料官网html+css+js 4页网页设计(4页)附源码