Android 2.2 API demos -- theme style

2024-03-25 02:18
文章标签 android api 2.2 style theme demos

本文主要是介绍Android 2.2 API demos -- theme style,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

style和theme的概念

现在借鉴官方的文档,总结一下style和theme的相关概念。

style是一个包含一种或者多种格式化属性的集合,可以将其作为一个单位用在layout XML的单个view上。 比如,可以定义一种style来规定文本的文字大小和颜色,然后将其应用于一个特定的view。

theme是一个包含一种或者多种格式化属性的集合,可以将其作为一个单位用在整个application或者其中某个activity上。比如,可以定义一个theme,其中定义的文字的大小和颜色,然后将其应用于某个activity,那么这个activity中的所有文本就都是这种样式了。

定义style

1. 在res/values/目录下新建一个XML文件。
2. XML文件的大体格式如下,根节点是<resources>,每一个style对应一个<style>元素,style里的每一种格式化属性对应一个<item>元素。

<?xml version="1.0" encoding="utf-8"?><resources><style name="ImageView240dpi"><item name="android:src">@drawable/stylogo240dpi</item><item name="android:layout_width">wrap_content</item><item name="android:layout_height">wrap_content</item>
</style>
</resources>


3. item的值可以是fill_parent等关键字,也可以引用其它的资源类型,例如,

<?xml version="1.0" encoding="utf-8"?><resources><style name="CustomTheme"><item name="android:windowNoTitle">true</item><item name="windowFrame">@drawable/screen_frame</item><item name="windowBackground">@drawable/screen_background_white</item><item name="panelForegroundColor">#FF000000</item><item name="panelBackgroundColor">#FFFFFFFF</item><item name="panelTextColor">?panelForegroundColor</item><item name="panelTextSize">14</item><item name="menuItemTextColor">?panelTextColor</item><item name="menuItemTextSize">?panelTextSize</item></style></resources>


用@符号和?符号来引用资源。@表明我们引用的资源是其它地方定义过的(也许在这个项目中或者在Android框架中)。?表明我们引用的资源的值在当前加载的主题中。这通过以名字引用特定的<item>来完成(比如,panelTextColor使用了分配给panelForegroundColor的相同颜色)。这种技巧只能用在XML资源当中。

4. <style>中的parent属性可以使一个style继承另一个style的属性。
既可以继承Android平台上的预定义style:

<style name="GreenText" parent="@android:style/TextAppearance"><item name="android:textColor">#00FF00</item>    
</style>


又可以继承自己定义的style,当继承自己定义的style时,可以不使用parent属性,只需要在name里加上被继承的style的name作为前缀即可:

<style name="GreenText.Red" parent="@android:style/TextAppearance">   <item name="android:textColor">#FF0000</item>    
</style>


 

使用style

1. 将style使用在view上。

<TextView style="@style/GreenText.Red" android:text="@string/hello" />


2. 将style应用在activity上。
  见官方custom dialog示例。

 

<activity android:name=".app.CustomDialogActivity"android:label="@string/activity_custom_dialog"android:theme="@style/Theme.CustomDialog"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.SAMPLE_CODE" /></intent-filter>
</activity>


3. 将style应用在application上。

<application android:name="ApiDemosApplication"android:label="@string/activity_sample_code" android:theme="@style/Theme.CustomDialog"android:icon="@drawable/app_sample_code">

 

4. 在Java代码中应用style。

protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    ...    setTheme(android.R.style.Theme_Light);    setContentView(R.layout.main);}


 


5. 当你将一个style应用在viewgroup上时,它的内部view不会继承这些样式。

 

 

这篇关于Android 2.2 API demos -- theme style的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843547

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期