当前位置: 首页 > news >正文

Android 主题 vs 样式

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。

目录

  • 一、导读
  • 二、概览
  • 三、相关知识
    • 3.1 theme!= style
    • 3.2 theme 与 style区别
      • 使用方式不同
      • 作用范围不同
  • 五、 推荐阅读

在这里插入图片描述

一、导读

我们继续总结学习基础知识,温故知新。

本文我们总结下 android主题与样式的异同。

二、概览

Android样式系统提供了一种强大的方式来指定应用程序的视觉设计,但它很容易被误用。正确使用它可以使主题和样式更易于维护,使品牌更新不那么可怕,并使支持黑暗模式变得简单。

在文章中,我将介绍样式系统的构建块:主题和样式。

三、相关知识

3.1 theme!= style

主题和样式都使用相同的

样式是视图(view)属性值的集合,键都是视图属性,即小部件声明的属性,而且样式中的每个键都可以在布局中设置,
是针对View或者窗口(Window)设置外观或者格式的一个属性集合,比如可以指定:宽高尺寸、字体颜色、字号、背景颜色等属性。

主题(Theme)针对Activity或者Application(应用)设置外观或者格式的一个属性集合;
主题可以理解成某一种特殊的样式,定义主题和样式都是基于标签添加相应的属性;

3.2 theme 与 style区别

使用方式不同

我们在使用上也是有区别的,
如果是样式,则使用style=“@style/xxx”
eg:

<style name="Widget.Plaid.Button.InlineAction" parent=""><item name="android:gravity">center_horizontal</item><item name="android:textAppearance">@style/TextAppearance.CommentAuthor</item><item name="android:drawablePadding">@dimen/spacing_micro</item>
</style>

我们看个button,里面的每个属性都跟上面一一对应。

<Button android:gravity="center_horizontal"android:textAppearance="@style/TextAppearance.CommentAuthor"android:drawablePadding="@dimen/spacing_micro"/>

如果是样式,则使用android:theme=“@style/xxx”

<!-- AndroidManifest.xml -->
<application android:theme="@style/Theme.Plaid"><activity android:theme="@style/Theme.Plaid.About"/><!-- layout/foo.xml -->
<ConstraintLayout android:theme="@style/Theme.Plaid.Foo">

作用范围不同

应用于视图的样式仅应用于该视图,而不应用于其任何子视图。

而主题可用于整个应用,整个activity等。

五、 推荐阅读

Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏

ddd

相关文章:

  • vscode markdown 使用技巧 -- 如何快速打出一个Tab 或多个空格
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
  • 阻塞队列.
  • 【PC电脑windows-学习样例generic_gpio-ESP32的GPIO程序-基础样例学习】
  • 3 ALS算法的优化
  • NodeJS回调地狱及Promise优化
  • 【洛谷 P5738】【深基7.例4】歌唱比赛 题解(映射)
  • 并发编程 -常用并发设计模式
  • 面向服务架构-架构师(六十四)
  • react动态插入样式
  • 2024北京老博会/北京智慧养老展/北京养老机构管理系统展会
  • 线扫相机DALSA--采集卡Base模式设置
  • 机器学习-朴素贝叶斯之多项式模型
  • 用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
  • 大模型之十九-对话机器人
  • JS 中的深拷贝与浅拷贝
  • 0基础学习移动端适配
  • Android单元测试 - 几个重要问题
  • Angular 2 DI - IoC DI - 1
  • Angular 4.x 动态创建组件
  • C# 免费离线人脸识别 2.0 Demo
  • canvas 五子棋游戏
  • EOS是什么
  • ES6系列(二)变量的解构赋值
  • Invalidate和postInvalidate的区别
  • Java Agent 学习笔记
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • js
  • overflow: hidden IE7无效
  • React组件设计模式(一)
  • socket.io+express实现聊天室的思考(三)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Swoft 源码剖析 - 代码自动更新机制
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • yii2权限控制rbac之rule详细讲解
  • 如何优雅地使用 Sublime Text
  • 我建了一个叫Hello World的项目
  • 在Unity中实现一个简单的消息管理器
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​​​​​​​​​​​​​​Γ函数
  • ###C语言程序设计-----C语言学习(6)#
  • #if和#ifdef区别
  • $.ajax,axios,fetch三种ajax请求的区别
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (ibm)Java 语言的 XPath API
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)丶RabbitMQ的六大核心
  • (翻译)terry crowley: 写给程序员
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (转)Sql Server 保留几位小数的两种做法
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .md即markdown文件的基本常用编写语法
  • .net 8 发布了,试下微软最近强推的MAUI