- Android 基础
- Android - 首页
- Android - 概述
- Android - 环境设置
- Android - 架构
- Android - 应用程序组件
- Android - Hello World 示例
- Android - 资源
- Android - 活动(Activity)
- Android - 服务(Service)
- Android - 广播接收器(Broadcast Receiver)
- Android - 内容提供器(Content Provider)
- Android - 碎片(Fragment)
- Android - 意图/过滤器(Intents/Filters)
- Android - 用户界面
- Android - UI 布局
- Android - UI 控件
- Android - 事件处理
- Android - 样式和主题
- Android - 自定义组件
- Android 高级概念
- Android - 拖放
- Android - 通知
- 基于位置的服务
- Android - 发送电子邮件
- Android - 发送短信
- Android - 电话呼叫
- 发布 Android 应用程序
- Android 有用示例
- Android - 警报对话框
- Android - 动画
- Android - 音频捕获
- Android - 音频管理器
- Android - 自动完成
- Android - 最佳实践
- Android - 蓝牙
- Android - 相机
- Android - 剪贴板
- Android - 自定义字体
- Android - 数据备份
- Android - 开发者工具
- Android - 模拟器
- Android - Facebook 集成
- Android - 手势
- Android - Google 地图
- Android - 图像效果
- Android - ImageSwitcher
- Android - 内部存储
- Android - JetPlayer
- Android - JSON 解析器
- Android - Linkedin 集成
- Android - 加载微调器
- Android - 本地化
- Android - 登录屏幕
- Android - MediaPlayer
- Android - 多点触控
- Android - 导航
- Android - 网络连接
- Android - NFC 指南
- Android - PHP/MySQL
- Android - 进度圆圈
- Android - 进度条
- Android - 推送通知
- Android - RenderScript
- Android - RSS 阅读器
- Android - 屏幕录制
- Android - SDK 管理器
- Android - 传感器
- Android - 会话管理
- Android - 共享首选项
- Android - SIP 协议
- Android - 拼写检查器
- Android - SQLite 数据库
- Android - 支持库
- Android - 测试
- Android - 文字转语音
- Android - TextureView
- Android - Twitter 集成
- Android - UI 设计
- Android - UI 模式
- Android - UI 测试
- Android - WebView 布局
- Android - Wi-Fi
- Android - 小部件
- Android - XML 解析器
- Android 有用资源
- Android - 问答
- Android - 有用资源
- Android - 讨论
Android - 样式和主题
一个样式资源定义了 UI 的格式和外观。样式可以应用于单个 View(来自布局文件)或整个 Activity 或应用程序(来自清单文件)。
定义样式
样式在与指定布局的 XML 分开的 XML 资源中定义。此 XML 文件位于项目的res/values/目录下,并将具有<resources>作为根节点,这对于样式文件是必需的。XML 文件的名称是任意的,但必须使用 .xml 扩展名。
您可以使用<style>标签为每个文件定义多个样式,但每个样式都将具有唯一标识该样式的名称。Android 样式属性使用<item>标签设置,如下所示:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomFontStyle"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:capitalize">characters</item> <item name="android:typeface">monospace</item> <item name="android:textSize">12pt</item> <item name="android:textColor">#00FF00</item>/> </style> </resources>
<item>的值可以是关键字字符串、十六进制颜色、对其他资源类型的引用或其他值,具体取决于样式属性。
使用样式
定义样式后,您可以使用style属性在 XML 布局文件中使用它,如下所示:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text_id" style="@style/CustomFontStyle" android:text="@string/hello_world" /> </LinearLayout>
要了解与 Android 样式相关的概念,您可以查看样式演示示例。
样式继承
Android 以与网页设计中的级联样式表非常相似的方式支持样式继承。您可以使用它来继承现有样式的属性,然后仅定义要更改或添加的属性。
要实现自定义主题,请创建或编辑 MyAndroidApp/res/values/themes.xml 并添加以下内容:
<resources> ... <style name="MyCustomTheme" parent="android:style/Theme"> <item name="android:textColorPrimary">#ffff0000</item> </style> ... </resources>
在您的 AndroidManifest.xml 中,将主题应用于您想要设置样式的活动:
<activity android:name="com.myapp.MyActivity" ... android:theme="@style/MyCustomTheme" />
您的新主题将应用于您的活动,并且文本现在为亮红色。
将颜色应用于主题属性
然后,您的颜色资源可以应用于某些主题属性,例如窗口背景和主要文本颜色,方法是在自定义主题中添加<item>元素。这些属性在您的 styles.xml 文件中定义。例如,要将自定义颜色应用于窗口背景,请将以下两个<item>元素添加到您的自定义主题中,该主题在 MyAndroidApp/res/values/styles.xml 文件中定义:
<resources> ... <style name="MyCustomTheme" ...> <item name="android:windowBackground">@color/my_custom_color</item> <item name="android:colorBackgroundCacheHint">@color/my_custom_color</item> </style> ... </resources>
使用自定义九宫格与按钮
九宫格可绘制对象是一种特殊的图像,可以在保持其视觉完整性的同时按宽度和高度缩放。九宫格是指定 Android 按钮外观的最常用方法,尽管可以使用任何可绘制类型。
九宫格按钮示例
创建九宫格按钮的步骤
- 将此位图保存为 /res/drawable/my_nine_patch.9.png
- 定义一个新的样式
- 将新的按钮样式应用于自定义主题的 buttonStyle 属性
定义一个新的样式
<resources> ... <style name="MyCustomButton" parent="android:Widget.Button"> <item name="android:background">@drawable/my_nine_patch</item> </style> ... </resources>
应用主题
<resources> ... <style name="MyCustomTheme" parent=...> ... <item name="android:buttonStyle">@style/MyCustomButton</item> </style> ... </resources>
Android 主题
希望您理解了样式的概念,那么现在让我们尝试了解什么是主题。主题不过是在整个 Activity 或应用程序(而不是单个 View)上应用的 Android 样式。
因此,当样式作为主题应用时,Activity 或应用程序中的每个View都将应用其支持的每个样式属性。例如,您可以将相同的CustomFontStyle样式作为 Activity 的主题应用,然后该Activity内的所有文本都将具有绿色等宽字体。
要为应用程序的所有活动设置主题,请打开AndroidManifest.xml文件并编辑<application>标签以包含android:theme属性以及样式名称。例如:
<application android:theme="@style/CustomFontStyle">
但是,如果您希望将主题应用于应用程序中的一个 Activity,则只需将 android:theme 属性添加到<activity>标签中。例如:
<activity android:theme="@style/CustomFontStyle">
Android 定义了许多默认主题,您可以直接使用它们或使用parent属性继承它们,如下所示:
<style name="CustomTheme" parent="android:Theme.Light"> ... </style>
要了解与 Android 主题相关的概念,您可以查看主题演示示例。
设置颜色调色板
布局设计可以基于这些颜色实现,例如以下设计是基于主题颜色(蓝色)设计的
以上布局是基于 style.xml 文件设计的,该文件位于res/values/
<resource> <style name="AppTheme" parent="android:Theme.Material"> <item name ="android:color/primary">@color/primary</item> <item name ="android:color/primaryDark">@color/primary_dark</item> <item name ="android:colorAccent/primary">@color/accent</item> </style> <resource>
默认样式和主题
Android 平台提供大量可用于应用程序的样式和主题。您可以在R.style类中找到所有可用样式的参考。要使用此处列出的样式,请将样式名称中的所有下划线替换为句点。例如,您可以使用“@android:style/Theme.NoTitleBar”应用 Theme_NoTitleBar 主题。您可以查看以下 Android 样式和主题的源代码: