Android应用开发之总结一下Android中主题(Theme)的正确玩法
白羽 2018-08-10 来源 :网络 阅读 1273 评论 0

摘要:本文将带你了解Android应用开发之总结一下Android中主题(Theme)的正确玩法,希望本文对大家学Android有所帮助

        本文将带你了解Android应用开发之总结一下Android中主题(Theme)的正确玩法,希望本文对大家学Android有所帮助


 
总结一下Android中主题(Theme)的正确玩法


在AndroidManifest.xml文件中有<application Android:theme="@style/AppTheme">,其中的@style/AppTheme是引用的res/values/styles.xml 中的主题样式,也有可能是引用的 res/values-v11/styles.xml 或者 res/values-v14/styles.xml,这是根据运行此程序的手机系统来决定的,如果手机系统的API版本是11以上就是v11/styles.xml,以此类推。在values/styles.xml中你会发现AppTheme的主题样式又是继承自AppBaseTheme,而AppBaseTheme的父主题就各有不同了,你也可以从这个位置来自己修改主题,此文章主要就是来讨论这个主题如何修改。

需要注意的是,做为初学者或者专门来研究主题(Theme),你最好是删除values-v11和values-v14以及values-vXX,以免被这些东西所干扰。

 
主题的来源有三个:
1) 来自android系统自带的
2) 来自兼容包的(比如v7兼容包)
3) 你自己写一个主题
这里主要探讨前两者,自己写主题不探讨。
 
使用android系统中自带的主题要加上“android:”,如:android:Theme.Black使用v7兼容包中的主题不需要前缀,直接:Theme.AppCompat
 
在Android Studio中书写主题时都会有自动提示,而在Eclipse不会有自动提示
解决办法是不要写“android:Theme.Black”,而是写“@android:style/Theme.Black”这样就会有提示不要写“Theme.AppCompat”,而是写“@style/Theme.AppCompat”

因为 style(@android:style/Theme.Black) 与 theme(android:Theme.Black) 在使命上还是有区别的,所以在eclipse中书写时为了出现自动提示,可以写“@android:style/Theme.Black”,但是写完了之后,记得手动的改为“android:Theme.Black”

 
现在看看有些什么主题

系统自带主题:API 1:android:Theme 根主题android:Theme.Black 背景黑色android:Theme.Light 背景白色android:Theme.Wallpaper 以桌面墙纸为背景android:Theme.Translucent 透明背景android:Theme.Panel 平板风格android:Theme.Dialog 对话框风格
API 11:android:Theme.Holo Holo根主题android:Theme.Holo.Black Holo黑主题android:Theme.Holo.Light Holo白主题
API 14:Theme.DeviceDefault 设备默认根主题Theme.DeviceDefault.Black 设备默认黑主题Theme.DeviceDefault.Light 设备默认白主题
API 21: (网上常说的 Android Material Design 就是要用这种主题)Theme.Material Material根主题Theme.Material.Light Material白主题
兼容包v7中带的主题:Theme.AppCompat 兼容主题的根主题Theme.AppCompat.Black 兼容主题的黑色主题Theme.AppCompat.Light 兼容主题的白色主题

 
Theme.AppCompat主题是兼容主题,是什么意思呢?
意思就是说如果运行程序的手机API是21则就相当于是Material主题,如果运行程序的手机API是11则就相当于是Holo主题,以此类推
 
兼容包v7会被Google公司不断升级:比如 appcompat-v7-21.0 表示升级到向 API 21 兼容比如 appcompat-v7-23.2 表示升级到向 API 23 兼容
在eclipse中只能看到 appcompat_v7 后面没有跟API的版本号,如何识别呢?可以在eclipse中展开v7项目的res文件夹,查看有没有values-21、values-23这样的文件夹,最大数字就是API版本号了。
所以同样是v7兼容包,会有API版本号不同的区别,要注意。
 
所有能应用于应用程序主题都是以“Theme.”开头不是以“Theme.”开头的就不是应用程序主题,而是用于某些局部控件比如“ThemeOverlay”主题,可用于 Toolbar 控件,这里不做深入分析了。比如“TextAppearance”主题,可用于设置文字外观,这里不做深入分析了。比如在v7中有很多以“Base”开头的主题,是一些父主题,不建议直接使用。
 
更多主题:以下都是指“包含”,比如包含“Dialog”表示对话框风格比如Theme.Dialog、Theme.Holo.Dialog、Theme.Material.Dialog、Theme.AppCompat.Dialog都是对话框风格具体有没有这种组合,你就在“自动提示”中来看就可以,提示有就有,没有就没有。

Black 黑色风格Light 光明风格Dark 黑暗风格DayNight 白昼风格Wallpaper 墙纸为背景Translucent 透明背景Panel 平板风格Dialog 对话框风格NoTitleBar 没有TitleBarNoActionBar 没有ActionBarFullscreen 全屏风格MinWidth 对话框或者ActionBar的宽度根据内容变化,而不是充满全屏WhenLarge 对话框充满全屏TranslucentDecor 半透明风格NoDisplay 不显示,也就是隐藏了WithActionBar 在旧版主题上显示ActionBar

很多主题在使用时会报错,原因有很多,比如窗体必须继承AppCompactActivity,或者要继承ActionBarActiivty,或者要继承FragmentActivity,或者需要手动指定宽高,或者需要提升最低API版本,或者需要更高版本的SDK,或者兼容包版本不对等原因。
 
   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程