1.1,Theme主题作用范围
Theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)或者Activity的主题;主题是不能应用在某一个单独的View中;
1.2,Theme主题的定义
在AS中res/values/style.xml中定义,例如新建项目AS自动创建的Theme,是系统提供;
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
Android系统提供的主题在:..\platforms\android-29\data\res\values
常见的系统主题:(来自https://blog.csdn.net/oudetu/article/details/78568436)
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属性(来自:https://www.jianshu.com/p/06a3bbb7ce79)
@color/white
@color/white
@color/colorAccent
#00000000
true
true
true
true
true
#E91E63
true
@drawable/ic_launcher_background
<!--@color/light_purple-->
false
#B0C4DE
#E6E6FA
#1C71A9
#FFFFFF
#C1C1C1
#FF7F50
#FF00FF
#FFD700
#1C71A9
singleTop
landscape
1.3,Theme主题的使用
在AndroidManifest.xml为应用或者Activity设置theme,通过android:theme = "@style/theme主题名"来引入自己的主题
//自定义的Theme
在Java代码中设置theme,注意在Activity的onCreate方法中的setContentView(R.layout.activity_main)之前设置;
setTheme(R.style.AppTheme);
自定义属性 res/values/attrs.xml(通过:定义 赋值 使用)
二,style样式2.1,style样式的使用范围
style样式是针对窗体元素级别的或者说View级别的,改变指定控件或者Layout的样式。
2.2,style作用
抽取一些共同的属性定义到style中,可以省略重复的属性代码。
2.3,定义
res/values/style.xml中新建标签,为此标签设置name属性;如下
?attr/myHeight
#0ff0f0
15sp
200dp
match_parent
#ff0000
2.4,使用
在xml布局文件中
三,区别
从Theme和style的作用范围可以看出他们的区别;如果一个应用使用了theme,同时应用下的view也使用了style,那么当theme与样式style发生冲突时,style有效,因为style的优先级高于theme;
四,相同点都是在res/values/style.xml中定义;继承方式也相同即:.继承(只能继承自定义)和parent继承
五,相关@符号:表明我们应用的资源是已经定义过并存在的,可以直接引用。
? 符号:表明我们引用的资源的值在当前的主题当中定义过。
作者:Ang_qq_252390816