Android中Theme主题和Style样式使用介绍总结
1.Theme主题
1.1.Theme主题作用范围
Theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)和Activity的主题;主题是不能应用在某一个单独的View中;或者说Theme是用来设置应用全局主题风格的,对整个应用或某个Activity存在影响。
1.2.Theme主题的定义
在AS中res/values/style.xml中定义,例如新建项目AS自动创建的Theme,是系统提供;
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Android系统提供的主题在:..\platforms\android-29\data\res\values
常见的系统主题:
android:theme="@android:style/Theme.Dialog" 将一个Activity显示为能话框模式
android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序标题栏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序标题栏,并全屏
android:theme="Theme.Light" 背景为白色
android:theme="Theme.Light.NoTitleBar" 白色背景并无标题栏
android:theme="Theme.Light.NoTitleBar.Fullscreen" 白色背景,无标题栏,全屏
android:theme="Theme.Black" 背景黑色
android:theme="Theme.Black.NoTitleBar" 黑色背景并无标题栏
android:theme="Theme.Black.NoTitleBar.Fullscreen" 黑色背景,无标题栏,全屏
android:theme="Theme.Wallpaper" 用系统桌面为应用程序背景
android:theme="Theme.Wallpaper.NoTitleBar" 用系统桌面为应用程序背景,且无标题栏
android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" 用系统桌面为应用程序背景,无标题栏,全屏
android:theme="Translucent" 半透明
android:theme="Theme.Translucent.NoTitleBar" 半透明、无标题栏
android:theme="Theme.Translucent.NoTitleBar.Fullscreen" 半透明、无标题栏、全屏
android:theme=”Theme.Panel” 半透明,无标题,全屏
android:theme=”Theme.Light.Panel”平板风格显示
常见主题集合中的item属性
<!-- 应用的主要色调,actionBar默认使用该颜色,Toolbar导航栏的底色 -->
<item name="colorPrimary">@color/white</item>
<!-- 应用的主要暗色调,statusBarColor 默认使用该颜色 -->
<item name="colorPrimaryDark">@color/white</item>
<!-- 一般控件的选中效果默认采用该颜色,如 CheckBox,RadioButton,SwitchCompat,ProcessBar等-->
<item name="colorAccent">@color/colorAccent</item>
<!-- 状态栏、顶部导航栏 相关-->
<!-- status bar color -->
<item name="android:statusBarColor">#00000000</item>
<!-- activity 是否能在status bar 底部绘制 -->
<item name="android:windowOverscan">true</item>
<!-- 让status bar透明,相当于statusBarColor=transparent + windowOverscan=true -->
<item name="android:windowTranslucentStatus">true</item>
<!-- 改变status bar 文字颜色, true黑色, false白色,API23可用-->
<item name="android:windowLightStatusBar">true</item>
<!-- 全屏显示,隐藏状态栏、导航栏、底部导航栏 -->
<item name="android:windowFullscreen">true</item>
<!-- hide title bar -->
<item name="windowNoTitle">true</item>
<!-- 底部虚拟导航栏颜色 -->
<item name="android:navigationBarColor">#E91E63</item>
<!-- 让底部导航栏变半透明灰色,覆盖在Activity之上(默认false,activity会居于底部导航栏顶部),如果设为true,navigationBarColor 失效 -->
<item name="android:windowTranslucentNavigation">true</item>
<!-- WindowBackground,可以设置@drawable,颜色引用(@color),不能设置颜色值(#fffffff),
Window区域说明:Window涵盖整个屏幕显示区域,包括StatusBar的区域。当windowOverscan=false时,window的区域比Activity多出StatusBar,当windowOverscan=true时,window区域与Activity相同-->
<item name="android:windowBackground">@drawable/ic_launcher_background</item>
<!--<item name="android:windowBackground">@color/light_purple</item>-->
<!-- 控件相关 -->
<!-- button 文字是否全部大写(系统默认开)-->
<item name="android:textAllCaps">false</item>
<!-- 默认 Button,TextView的文字颜色 -->
<item name="android:textColor">#B0C4DE</item>
<!-- 默认 EditView 输入框字体的颜色 -->
<item name="android:editTextColor">#E6E6FA</item>
<!-- RadioButton checkbox等控件的文字 -->
<item name="android:textColorPrimaryDisableOnly">#1C71A9</item>
<!-- 应用的主要文字颜色,actionBar的标题文字默认使用该颜色 -->
<item name="android:textColorPrimary">#FFFFFF</item>
<!-- 辅助的文字颜色,一般比textColorPrimary的颜色弱一点,用于一些弱化的表示 -->
<item name="android:textColorSecondary">#C1C1C1</item>
<!-- 控件选中时的颜色,默认使用colorAccent -->
<item name="android:colorControlActivated">#FF7F50</item>
<!-- 控件按压时的色调-->
<item name="android:colorControlHighlight">#FF00FF</item>
<!-- CheckBox,RadioButton,SwitchCompat等默认状态的颜色 -->
<item name="android:colorControlNormal">#FFD700</item>
<!-- 默认按钮的背景颜色 -->
<item name="android:colorButtonNormal">#1C71A9</item>
<!-- 【无效】 在theme中设置Activity的属性无效, 请到AndroidManifest中Activity标签下设置 -->
<item name="android:launchMode">singleTop</item>
<item name="android:screenOrientation">landscape</item>
常见style元素属性标识
1.3.Theme主题的使用
在AndroidManifest.xml为应用或者Activity设置theme,通过android:theme = "@style/theme主题名"来引入自己的主题;
<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme.Launcher"> //自定义的Theme
</application>
在Java代码中设置theme,注意在Activity的onCreate方法中的setContentView(R.layout.activity_main)之前设置;
setTheme(R.style.AppTheme);
自定义属性 res/values/attrs.xml(通过:定义 赋值 使用)
1.4.系统Theme
系统Theme路径:SDK路径\platforms\android-26\data\res\values\themes.xml
2.style样式
2.1.style样式的使用范围
style样式是针对窗体元素级别的或者说View级别的,改变指定控件或者Layout的样式;
2.2.style作用
抽取一些共同的属性定义到style中,可以省略重复的属性代码。
2.3.定义
res/values/style.xml中新建<style>标签,为此标签设置name属性,如下:
<style name="myButtonStyle">
<item name="android:height">?attr/myHeight</item>
<item name="android:textColor">#0ff0f0</item> <!--字体颜色-->
<item name="android:textSize">15sp</item> <!--字体大小-->
<item name="android:layout_height">200dp</item> <!--控件高度-->
<item name="android:layout_width">match_parent</item> <!--控件宽度-->
<item name="android:background">#ff0000</item> <!--背景色-->
</style>
2.4.使用
在xml布局文件中
<Buttonandroid:id="@+id/btn_style_test"style="@style/myButtonStyle"/>
2.5.系统Style
SDK路径\platforms\android-26\data\res\values\styles.xml
3.区别
从Theme和style的作用范围可以看出他们的区别;如果一个应用使用了theme,同时应用下的view也使用了style,那么当theme与样式style发生冲突时,style有效,因为style的优先级高于theme;在R.attr定义中以window开头的一些属性只对theme有效。
4.相同点
两者的定义相同、继承方式也相同,都是在res/values/style.xml中定义;继承方式:. 继承(只能继承自定义)和parent继承;
5.相关
@符号:表明我们应用的资源是已经定义过并存在的,可以直接引用。
? 符号:表明我们引用的资源的值在当前的主题当中定义过。
Android中Theme主题和Style样式使用介绍总结相关推荐
- Android 中Theme主题使用
Android 中Theme主题使用 android 中的主题颜色可以设置给Activity Dialog ,和someWeght. 合理使用主题能够减少一些代码达到更好的用户体验效果 (1)Andr ...
- Android笔记 theme主题
Android中theme与style的定义没有区别 区别在于控制范围 theme范围更大 style用于控制view对象 theme用于控制Activity样式 1在res/values下定义the ...
- android 主题xml,Android中自定义主题风格theme.xml
在Android中可以通过自定义主题风格方式来实现个性化以及复用,首先我们创建theme.xml主题文件,保存位置为工程的 res/values/theme.xml ,这里我们可以可以为主题起一个名称 ...
- Android风格与主题(style and theme)
Android xml风格和主题文件的编写,是涉及到整个程序界面美观的因素之一.较好的应用风格和主题,可以实现美观而统一的界面,这就犹如Web开发中的CSS. Styles和Themes都是资源,存放 ...
- Android 风格与主题(style and theme)
1.什么是Style,什么是Theme? Style 和 theme:是一个包含一种 或者 多种格式化 属性 的集合 ,并且 style和theme都是资源,存放在res/values 文件夹下 即 ...
- Android中的AsyncTask异步任务的简单介绍
事件原由: 很多耗时的资源在安卓客户端加载时,必须要开启一个新的线程去操作维护,而如果直接在主线程中加载的话,客户端会直接报出异常,导致程序不能正常使用,而子线程无法直接更新UI,因此客户端提供了 ...
- Android中的主题Theme
系统自带的Theme: android以及为我们定义好了一些theme,需要是我们直接可以拿来使用. 常用的Theme通常如下: android:theme="@android:style/ ...
- android 中xml文件的各种样式的学习
http://keeganlee.me/post/android/20150916 代码规范演示: <!-- 方法一 --> <?xml version="1.0" ...
- android 焦点的作用,Android中的视图焦点Focus的详细介绍
在非触摸屏设备中接收事件和处理响应的控件是具有焦点(Focused)的控件.一个窗口中一个时间内只能有一个具有焦点的控件.在早期具有滚轮设备的android系统中以及现在的智能TV电视应用中视图的焦点 ...
最新文章
- 【Linux驱动】ThinkPad笔记本wifi模块rtl8821ce在ubuntu16.04的驱动(默认没有)
- 七大Github机器学习热门项目
- CUDA占用率计算方法
- C++ 实现 STL 标准库和算法(二)template 编程和迭代器粗解 实验楼笔记
- 安装java环境linux和windows
- 武汉疫情之后,中国即将发生的10大变化!(强烈推荐)
- 信用评分卡—信贷准入A卡(逻辑回归)
- 牛客19115 选择颜色
- 一调计算机专业综合理论试卷,一调计算机专业综合理论试卷(盐城)(新编)
- springcloud服务调用以及整合Hystrix
- 微软集成开发者工具到 Visual Studio 中,Web 工具迎来“大换血”?
- Bootstrap Table API 中文版 说明文档
- python如何下载包_怎么在python中下载包
- flume系列之:清理HDFS上的tmp文件,把.gz.tmp文件变为.gz文件
- 利用手机模拟器进行apk抓包分析
- 大数据Hadoop之——Cloudera Hadoop(CM 6.3.1+CDH 6.3.2环境部署)
- 如何学计算机打字,电脑如何快速学会打字
- 年金系数用计算机怎么算,年金系数是什么?怎么计算?
- SpringBoot对接微信公众号,持续更新
- APS高级计划排程系统,工厂各部门实施前后有哪些区别?
热门文章
- 软开企服开源的JVS开发套件(V2.1.3)产品说明书
- 学java常忘怎么办_经常忘记事情怎么办?一定要学会这个方法,既简单又实用!...
- Mothur6进阶_Mothur扩增子基因序列分析_基于系统型phylogeny的多样性指数分析
- 共享在阿里云ecs上安装自定义iso的方法
- ThreadPool学习笔记
- java item.getparentnode(),javascript中parentNode,childNodes,children的应用详解
- window下编译32/64位库文件
- 关于泛型的super与extends 的set方法
- 伊吹萃香_纪中2556_spfa
- cellpadding_在CSS中设置cellpadding和cellspacing