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

Android Activity 的对话框(Dialog)样式

Android Activity 的对话框(Dialog)样式

Activity 可以设置成 dialog 样式出现,主要通过 manifest 配置中 <activity> 标签的 android:theme 属性值实现,亦或通过代码设置方式 setTheme(int) 修改 Activity 出现的样式。
这篇文章中测试设备是一台手机。

程序基本构建配置:

android {compileSdk = 35defaultConfig {applicationId = "com.sanren1024.dialog"minSdk = 30this.targetSdk = 35versionCode = 1versionName = "1.0.0.0"testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"}
// ...
}

下面列举若干个 theme 对应的页面出现的样式,通过代码方式设置 theme.


android.R.style.Theme_Dialog

Theme_Dialog

这个普通的 Dialog 样式,ActionBar 背景色是黑色。


Material

android.R.style.Theme_Material_Dialog

Theme_Material_Dialog

这个样式中,整个背景是黑色,带有 ActionBart 的一个 Dialog 样式。与上面的区别是在 ActionBar 的颜色不同,布局有所不同。


android.R.style.Theme_Material_Dialog_Alert

Theme_Material_Dialog_Alert

这个 Dialog 样式与 android.R.style.Theme_Material_Dialog 一致。


android.R.style.Theme_Material_DialogWhenLarge

Theme_Material_DialogWhenLarge

这个样式的 Activity,基本与不设置 Dialog 样式的 Activity 一致,不类似于上面几个样式,会修改底部 NavigationBar 的背景色,这一个样式没有修改它的颜色。


android.R.style.Theme_Material_DialogWhenLarge_NoActionBar

Theme_Material_DialogWhenLarge_NoActionBar

这个样式在 android.R.style.Theme_Material_DialogWhenLarge 基础上移除了 ActionBar。


android.R.style.Theme_Material_Dialog_MinWidth

Theme_Material_Dialog_MinWidth


android.R.style.Theme_Material_Dialog_NoActionBar

Theme_Material_Dialog_NoActionBar


android.R.style.Theme_Material_Dialog_NoActionBar_MinWidth

Theme_Material_Dialog_NoActionBar_MinWidth


android.R.style.Theme_Material_Dialog_Presentation

Theme_Material_Dialog_Presentation

这个样式比较不同,将 StatusBar 都遮蔽了。


Material_Light

android.R.style.Theme_Material_Light_Dialog

Theme_Material_Light_Dialog


android.R.style.Theme_Material_Light_Dialog_Alert

Theme_Material_Light_Dialog_Alert


android.R.style.Theme_Material_Light_Dialog_Presentation

Theme_Material_Light_Dialog_Presentation


android.R.style.Theme_Material_Light_DialogWhenLarge

Theme_Material_Light_DialogWhenLarge


android.R.style.Theme_Material_Light_Dialog_MinWidth

Theme_Material_Light_Dialog_MinWidth


android.R.style.Theme_Material_Light_DialogWhenLarge_DarkActionBar

Theme_Material_Light_DialogWhenLarge_DarkActionBar


android.R.style.Theme_Material_Light_DialogWhenLarge_NoActionBar

Theme_Material_Light_DialogWhenLarge_NoActionBar


android.R.style.Theme_Material_Light_Dialog_NoActionBar

Theme_Material_Light_Dialog_NoActionBar


android.R.style.Theme_Material_Light_Dialog_NoActionBar_MinWidth

Theme_Material_Light_Dialog_NoActionBar_MinWidth


DeviceDefault

android.R.style.Theme_DeviceDefault_Dialog

Theme_DeviceDefault_Dialog


android.R.style.Theme_DeviceDefault_DialogWhenLarge

Theme_DeviceDefault_DialogWhenLarge


android.R.style.Theme_DeviceDefault_Dialog_MinWidth

Theme_DeviceDefault_Dialog_MinWidth


android.R.style.Theme_DeviceDefault_DialogWhenLarge_NoActionBar

Theme_DeviceDefault_DialogWhenLarge_NoActionBar


android.R.style.Theme_DeviceDefault_Dialog_Alert

Theme_DeviceDefault_Dialog_Alert


android.R.style.Theme_DeviceDefault_Dialog_NoActionBar

Theme_DeviceDefault_Dialog_NoActionBar


android.R.style.Theme_DeviceDefault_Dialog_NoActionBar_MinWidth

Theme_DeviceDefault_Dialog_NoActionBar_MinWidth


DeviceDefault_Light

android.R.style.Theme_DeviceDefault_Light_Dialog

Theme_DeviceDefault_Light_Dialog


android.R.style.Theme_DeviceDefault_Light_DialogWhenLarge

Theme_DeviceDefault_Light_DialogWhenLarge


android.R.style.Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar

Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar


android.R.style.Theme_DeviceDefault_Light_Dialog_Alert

Theme_DeviceDefault_Light_Dialog_Alert


android.R.style.Theme_DeviceDefault_Light_Dialog_NoActionBar

Theme_DeviceDefault_Light_Dialog_NoActionBar


android.R.style.Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth

Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth


android.R.style.Theme_DeviceDefault_Light_Dialog_MinWidth

Theme_DeviceDefault_Light_Dialog_MinWidth


Overlay

android.R.style.ThemeOverlay_Material_Dialog

ThemeOverlay_Material_Dialog


android.R.style.ThemeOverlay_Material_Dialog_Alert

ThemeOverlay_Material_Dialog_Alert

总结

Dialog 样式主要的风格是 Material 样式和 DeviceDefault 样式。
两者的主要区别如下表。

MaterialDeviceDefault
遵循 Google 的 Material Design 设计预言,强调阴影、圆角、动态色彩和交互动画(如水波纹效果)。继承设备制造商(如三星 One UI、小米 MIUI)的自定义主题,视觉风格由厂商定义。
仅支持 Android 5.0+(API 21)从 Android 4.0(API 14)开始
自定义灵活性高自定义灵活性低
视觉效果一致因厂商而异
http://www.dtcms.com/a/328749.html

相关文章:

  • RxJava 在 Android 中的深入解析:使用、原理与最佳实践
  • 基于Apache Flink的实时数据处理架构设计与高可用性实战经验分享
  • 【cs336学习笔记】[第5课]详解GPU架构,性能优化
  • 深入 Linux 线程:从内核实现到用户态实践,解锁线程创建、同步、调度与性能优化的完整指南
  • iscc2025区域赛wp
  • 服务器通过生成公钥和私钥安全登录
  • Android 在 2020-2025 都做哪些更新?
  • 如何提供对外访问的IP(内网穿透工具)
  • 【Android】ChatRoom App 技术分析
  • OpenAI 回应“ChatGPT 用多了会变傻”
  • Control Center 安卓版:个性化手机控制中心
  • ClickHouse从入门到企业级实战全解析课程简介
  • 1688商品数据抓取:Python爬虫+动态页面解析
  • 基于elk实现分布式日志
  • Windows11 运行IsaacSim GPU Vulkan崩溃
  • 三极管的基极为什么需要下拉电阻
  • Pycharm选好的env有包,但是IDE环境显示无包
  • Excel多级数据结构导入导出工具
  • Nuxt 3 跨域问题完整解决方案(开发 + 生产环境)
  • Appium-移动端自动测试框架详解
  • 【MCP开发】Nodejs+Typescript+pnpm+Studio搭建Mcp服务
  • 【数据可视化-88】航空公司航班数据分析与可视化:Python + pyecharts洞察航空旅行趋势
  • 通用安全指南
  • 关于在img标签的src里面直接使用“~/assets/images/xxx“可以,但是若将这个路径写成变量的形式就会报错
  • Java Stream API 中常用方法复习及项目实战示例
  • BGP综合实验_Te. BGP笔记
  • 七大排序算法全解析:从入门到精通
  • 开源模型应用落地-用LLaMA-Factory点亮Qwen3-4B的“读心术”(十九)
  • Java开发环境搭建(WIN+IDEA+Maven)
  • davici configurator 报错:License file of SIP has no valid checksum.