1.1,theme主题作用范围
theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)或者Activity的主题;主题是不能应用在某一个单独的VIEw中;
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
常见的系统主题:(来自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)
<!-- 应用的主要色调,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>
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(通过:定义 赋值 使用)
二,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布局文件中
<button androID:ID="@+ID/btn_style_test" />
三,区别从theme和style的作用范围可以看出他们的区别;如果一个应用使用了theme,同时应用下的vIEw也使用了style,那么当theme与样式style发生冲突时,style有效,因为style的优先级高于theme;
四,相同点都是在res/values/style.xml中定义;继承方式也相同即:.继承(只能继承自定义)和parent继承
五,相关@符号:表明我们应用的资源是已经定义过并存在的,可以直接引用。
? 符号:表明我们引用的资源的值在当前的主题当中定义过。
以上是内存溢出为你收集整理的Android中Theme主题和Style样式使用介绍总结全部内容,希望文章能够帮你解决Android中Theme主题和Style样式使用介绍总结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)