样式与主题
来源:互联网 发布:北京赛车软件下载 编辑:程序博客网 时间:2024/06/07 03:32
1.样式
样式是一套能够应用于视图组件的属性。
添加新样式的方式为:在res/values/styles.xml样式文件中,添加style标签,style标签中的name为新建的样式名,其中的@color/dark_blue为在res/values/colors.xml文件中定义好的颜色资源。如:
<style name="BeatBoxButton" > <item name="android:background" >@color/dark_blue</item></style>这样该样式就定义了背景色为深蓝色的属性值。定义好的样式,可以把它添加给需要修饰的按钮。如下图:
<Button xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" style="@style/BeatBoxButton" android:id="@+id/list_item_button" android:layout_width="match_parent" android:layout_height="120dp" tools:text="Sound name"/>这样,由该样式所修饰的按钮背景色就是深蓝色的。
样式的继承
样式的继承方式有两种:第一种,以主题名的形式指定父主题,这样的样式不仅继承按钮的背景色,也会添加自己后面定义的粗体显示按钮文字的功能。
<style name="BeatBoxButton" > <item name="android:background" >@color/dark_blue</item></style><style name="BeatBoxButton.Strong"> <item name="android:textStyle">bold</item></style>第二种,采用指定父样式的形式。
<style name="BeatBoxButton" > <item name="android:background" >@color/dark_blue</item></style><style name="StrongBeatBoxButton" parent="@style/BeatBoxButton"> <item name="android:textStyle">bold</item></style>两种方式的区别:
要以主题名的形式指定父主题,有继承关系的两个主题都应处于同一个包中。因此,对于Android操作系统内部主题间的继承,就可以直接使用主题名继承表示法。但是如果要跨库继承,就一定要明确使用parent属性。
2.主题
主题是样式的进化加强版。样式属性适用于所有组件,而主题属性适用于整个应用。可以在AndroidManifest.xml文件的application标签下的theme属性处查看项目的默认主题。
AppCompat库自带三大主题:
Theme.AppCompat-----深色主题
Theme.AppCompat.Light----浅色主题
Theme.AppCompat.Light.DarkActionBar----带深色工具栏的浅色主题
3. 覆盖主题属性,以覆盖背景色属性为例。
第一步,打开styles.xml文件,按住Ctrl键(window系统)点击Theme.AppCompat,Android studio会定位到一个大文件的一行,如下图:
<style name="Theme.AppCompat" parent="Base.Theme.AppCompat"/>该行表明Theme.AppCompat主题属性继承自Base.Theme.AppCompat,而Theme.AppCompat本身没有覆盖任何属性,仅仅指向父主题。
第二步:按住Ctrl键再点击Base.Theme.AppCompat,Android studio会提示这个主题有多个版本,选择Base.Theme.AppCompat (...\values\values.xml)版本
<style name="Base.Theme.AppCompat" parent="Base.V7.Theme.AppCompat"></style>
第三步,继续定位到Base.V7.Theme.AppCompat,如下图:
<style name="Base.V7.Theme.AppCompat" parent="Platform.AppCompat"> <item name="windowNoTitle">false</item> <item name="windowActionBar">true</item> <item name="windowActionBarOverlay">false</item> <item name="windowActionModeOverlay">false</item> <item name="actionBarPopupTheme">@null</item> <item name="colorBackgroundFloating">@color/background_floating_material_dark</item> <!-- Used by MediaRouter --> <item name="isLightTheme">false</item>后面还有很多属性,但是没有要覆盖的背景色属性。
第四步,继续定位Platform.AppCompat,选择values-v11/values.xml版本。如下图:
<style name="Platform.AppCompat" parent="Platform.V11.AppCompat"/><style name="Platform.AppCompat.Light" parent="Platform.V11.AppCompat.Light"/><style name="Platform.V11.AppCompat" parent="android:Theme.Holo"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="android:buttonBarStyle">?attr/buttonBarStyle</item> <item name="android:buttonBarButtonStyle">?attr/buttonBarButtonStyle</item> <item name="android:borderlessButtonStyle">?attr/borderlessButtonStyle</item> <!-- Window colors --> <item name="android:colorForeground">@color/foreground_material_dark</item>第五步:继续定位Platform.V11.AppCompat,定位到如图所示的一行:
<style name="Platform.V11.AppCompat" parent="android:Theme.Holo">第六步:定位android:Theme.Helo主题,得到下图:
<style name="Theme.Holo"> <item name="colorForeground">@color/bright_foreground_holo_dark</item> <item name="colorForegroundInverse">@color/bright_foreground_inverse_holo_dark</item> <item name="colorBackground">@color/background_holo_dark</item> <item name="colorBackgroundFloating">@color/background_holo_dark</item> <item name="colorBackgroundCacheHint">@color/background_cache_hint_selector_holo_dark</item> <item name="disabledAlpha">0.5</item> <item name="backgroundDimAmount">0.6</item>查看代码,可以看到colorBackground这个属性,这个属性就是用于主题背景色的属性。
第七步:回到res/values/styles.xml文件,覆盖colorBackground这个属性,如下图代码所示:
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat"> <item name="colorPrimary">@color/red</item> <item name="colorPrimaryDark">@color/dark_red</item> <item name="colorAccent">@color/gray</item> <item name="android:colorBackground">@color/soothing_blue</item>这样经过上述七步,就完成了修改应用主题的操作。
- Android样式与主题
- Android主题与样式
- Android主题与样式
- android样式与主题
- 样式与主题
- 样式与主题
- Actionbar主题与样式
- android样式与主题
- Android主题与样式
- 样式与主题
- Android主题与样式
- android主题与样式
- Android样式与主题
- 样式与主题1
- 样式与主题2
- Android主题与样式
- Android样式与主题
- 主题与样式
- 对现有Hive的大表进行动态分区
- SXOJ843 迷失的奶牛
- 21分钟Mysql入门教程
- Centos 安装mysql问题解决
- getComputedStyle
- 样式与主题
- LDAP报错:javax.naming.AuthenticationException: [LDAP: error codelid Credentials]
- python封装一个效率极高的 批量更新、插入合一的工具
- angular的修改,性别筛选
- oracle树查询(递归查询)
- IE8的兼容问题
- 关于Java类中的代码块 普通代码块和初始化代码块
- Unity3d-Json数据解析在登录注册本地存取的应用
- 二周第一次课 2017.10.23 相对和绝对路径、cd命令、创建和删除目录mkdir/rmdir、rm命令