简介:主题决定了App的展示效果,我们可以为整个Application指定主题,也可以为Activity单独指定主题,甚至可以为各个控件如Button、TextView指定主题。本文对Android Theme的引用方式,版本分类进行列举,并对兼容包主题进行了归类、总结。期望达到对Theme有一个总体的清晰的认识。

一、Theme的来源分类

  1. 系统的主题

  2. 第三方库的主题

  3. 兼容包如support_v7.jar的主题

  4. 用户自定义的主题

二、引用方式

  • 系统主题: "@android:style/Theme.Holo.Light"

  • 兼容包:   AndroidManifests.xml中"@style/Theme.Appcompat",其他地方使用“Theme.Appcompat”即可

  • 自定义主题:"@style/AppTheme"

三、Theme的版本分类

  1. android:Theme              API 1 开始

  2. android:Theme.Holo           API 11(android3.0) 开始

  3. android:Theme.DeviceDefault     API 14(android4.0) 开始

  4. android:Theme.Material        API 21(android5.0) 开始

  5. Theme.AppCompat             兼容包AppCompat_v7中的主题

主题的不同版本:

Theme

Theme 深色主题

Theme.Light 浅色主题

位置:sdk/platforms/android-25/data/res/values/themes.xml

简介:许多主题的最终父类主题

Theme.Holo

Theme.Holo 深色主题

Theme.Holo.Light 浅色主题

位置:sdk/platforms/android-25/data/res/values/themes_holo.xml

简介:android 11 - 13 的默认主题

Theme.DeviceDefault

Theme.DeviceDefault 深色主题

Theme.DeviceDefault.Light 浅色主题

位置:sdk/platforms/android-25/data/res/values/themes_device_defaults.xml

简介:android 14以上的默认主题,在不同系统版本的设备上可以提供不同的样式

Theme.Material

Theme.Material 深色主题

Theme.Material.Light 浅色主题

位置:sdk/platforms/android-25/data/res/values/themes_material.xml

简介:Material Design的样式

Theme.Leanback

位置:sdk/platforms/android-25/data/res/values/themes_leanback.xml

简介:不知道是什么主题,暂且罗列在此

-------------------------------------------------------------------------------------------

AppCompat_v7兼容包主题细分:

(以'com.android.support:appcompat-v7:25.1.0'为例:)

  • AlertDialog.AppCompat          对话框深色

  • AlertDialog.AppCompat.Light      对话框浅色

  • Animation.AppCompat.Dialog       带动画效果的对话框

  • Animation.AppCompat.DropDownUp

  • Theme.AppCompat              作用于Activity层面以上的主题

  • Base、Platform               作为父类被继承的,一般不直接使用

  • RtlOverlay.Widget.AppCompat

  • RtlUnderlay.Widget.AppCompat

  • TextAppearance.AppCompat        文字样式相关

  • ThemeOverlay.AppCompat

  • Widget.AppCompat              控件相关的主题

-------------------------------------------------------------------------------------------

关于Theme.ApCompat兼容主题

主题间的继承关系:(以Theme.AppCompat为例)

Theme.AppCompat ——> Base.Theme.AppCompat

Base.Theme.AppCompat ——> Base.V*.Theme.AppCompat (*可能是7、21、23等)

Base.V*.Theme.AppCompat ——> Platform.AppCompat

Platform.AppCompat ——> android:Theme

其中第二步:版本25.1.0有四种选择:Base、Base.V21、Base.V22、Base.V23。(更早的版本还有V7、V11等)

兼容:App在运行时会根据系统的版本选择对应的父类主题。大于21选择V21,大于22选择V22

例如:使用DatePicker、CalendarView等在不同版本手机上安装会展示不同的样式,在4.2的手机上展示holo的样式,在5.1的手机上展示material样式。

App的UI一致性:不少App为了保证在不同手机上的UI一致性,会给控件显式指定样式,为了向下兼容,通常会使用holo样式,并做一下调整。

-------------------------------------------------------------------------------------------

系统通常预定义的主题样式

Theme.AppCompat               深色主题

Theme.AppCompat.NoActionBar      没有ActionBar

Theme.AppCompat.Dialog          对话框适用

Theme.AppCompat.Dialog.Alert      警告框适用(根据屏幕决定宽度)

Theme.AppCompat.Dialog.MinWidth    对话框适用(根据内容决定宽度)

Theme.AppCompat.DialogWhenLarge    充满屏幕(继承自Theme.AppCompat,但没有扩展)

Theme.AppCompat.CompactMenu      看名字是用于Menu菜单。未验证

其他主题系统默认都会有上述几种类型的子主题,以此类推就好。

例如:浅色主题只需要将Theme.AppCompat 替换成 Theme.AppCompat.Light即可

-------------------------------------------------------------------------------------------

常见的样式属性摘记

android:windowFullscreen     隐藏状态栏

windowActionBar         是否显示ActionBar

windowNoTitle          是否显示TitleBar,经常和windowActionBar一起使用

转载于:https://blog.51cto.com/weijiancheng/1891175

Android Theme 主题总结相关推荐

  1. Android Theme 主题里的几个设计颜色的属性

    Android Theme 主题里的几个设计颜色的属性:

  2. android:theme 多个,Android Theme 主题总结

    简介:主题决定了App的展示效果,我们可以为整个Application指定主题,也可以为Activity单独指定主题,甚至可以为各个控件如Button.TextView指定主题.本文对Android ...

  3. Android Theme主题

    •android:theme="@android:style/Theme.Dialog" 将一个Activity显示为能话框模式 •android:theme="@and ...

  4. Android Theme主题属性资源定义说明及示例

    一.概述 <applicationandroid:theme="@style/BaseTheme.NoTitleBar.Animation"...>... </a ...

  5. android theme material,Android Studio 换主题(Material Theme..)

    1.去如下网址下载自己喜欢的主题文件xx.jar http://color-themes.com/?view=index 2. 导入方式 下载主题-xxx.jar 注意:如果我们下载下来的jar名字如 ...

  6. Android 系统自带 Theme(主题)

    系统为我们提供了丰富的系统自带的Theme,当然,你也可以自定义Theme,前提是该Theme必须继承与某个已经存在地Theme,否则编译器会提示错误的. 1. 应用Theme属性两种方式 ①.在An ...

  7. Android笔记 theme主题

    Android中theme与style的定义没有区别 区别在于控制范围 theme范围更大 style用于控制view对象 theme用于控制Activity样式 1在res/values下定义the ...

  8. android style(样式)和theme(主题)设置

    android应用程序如何设置样式,包括样式定义.单个view设置样式. 全局样式设置.样式继承关系. 1.样式定义 android的样式定义在res/values/style.xml文件中,类似we ...

  9. 【Android进阶】14、theme 主题 和 menu 顶部应用栏

    文章目录 14.1 theme 主题 14.2 menu 应用栏的菜单 14.2.1 在XML文件中定义菜单 14.2.2 创建菜单 14.2.3 响应菜单项选择 14.3 用 Android Ass ...

最新文章

  1. 《强化学习周刊》第21期:EMNLP 2020-2021强化学习的最新研究与应用
  2. 摩拜单车正式进军日本,积极拓展海外市场
  3. Unity3D时间顺序与功能
  4. 【数据挖掘知识点四】参数估计
  5. 什么才是好代码、高质量代码?
  6. WPF 使用 Expression Design 画图导出及使用 Path 画图
  7. centos8共享文件夹挂载_CentOS 8 安装并配置NFS服务
  8. 新颖的c语言题目,新颖版c语言经典习题100例(全面面)
  9. 有头结点单链表的逆置
  10. spring-boot-2.0.3应用篇 - shiro集成
  11. 你愿意一辈子当一个打工的吗
  12. 给datalist加自动编号(解决博客的第XX楼)
  13. armboot和内核文件系统烧写总结
  14. C#6.0新特性的尝试
  15. 感谢宝贝: 带给我别样人生
  16. ping命令使用集合
  17. Linux鼠标回报率修改,鼠标回报率怎么调? 设置鼠标回报率的三种方法
  18. 5、优化方法:随机梯度下降法
  19. CorelDRAW2021标准版 序列号授权码
  20. CSAPP 第三版 第六章 家庭作业and so on

热门文章

  1. socket中的几个数据结构
  2. 大数据之-Hadoop3.x_MapReduce_Job提交流程---大数据之hadoop3.x工作笔记0103
  3. C++_类和对象_C++多态_案例3-电脑组装---C++语言工作笔记075
  4. Error: EBUSY: resource busy or locked, lstat ‘D:\DumpStack.log.---基于Vue的uniapp手机端_前端UI_uview工作笔记004
  5. nginx工作笔记005---nginx配置负载均衡_在微服务中实现网关集群_实现TCP传输层协议__http协议的负载均衡
  6. SpringCloud学习笔记006---使用properties配置文件实现多环境配置
  7. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...
  8. android学习笔记---使用AsyncTask实现异步处理,内部使用线程加Handler
  9. 前端输入框错误提示_WEB/APP开发基础之旅--前端、服务器端、数据库综合开发案例...
  10. php 不同数据库的调用方法,php连接不同数据库的几种方法