Android Styles / Themes要点整理

PySide6通用化GUI框架:模块化设计与部署实践 Python桌面应用开发中,GUI框架选型直接决定界面效率与维护成本。从tkinter到PyQt再到PySide6,开发者往往需要在授权协议、组件丰富度和模块化能力之间权衡。PySide6作为Qt官方支持的Python绑定,以LGPL协议提供商业友好的开发环境,其信号槽机制实现界面与业务解耦,QSS样式分离则让主题定制与夜间模式切换变得轻量。基于分层架构与模块注册机制,通用化框架将窗口外壳、数据表格、异步任务等高频组件沉淀为可复用模块,并通过配置驱动生成界面骨架,显著降低多项目重复搭建成本。本文系统梳理了这 阅读详情

 (整理得比较草,用于以后查找)

 
style作用于View,而theme是作用于activity或application的style。

一共如下几个要点:
     Style的存放位置
     所有可能可能的style属性
     一套Theme里面可以包括的style属性
     Android系统本身已经提供的大量的theme
     系统缺省的theme和IDE开发环境自动配置的theme
     style和theme的继承和修正


Style的存放位置

存放在在res/values目录里面

To create a set of styles, save an XML file in the  res/values/  directory of your project. The name of the XML file is arbitrary, but it must use the  .xml  extension and be saved in the  res/values/  folder.



所有可能可能的style属性:

The best place to find properties that apply to a specific View is the corresponding class reference, which lists all of the supported XML attributes. For example, all of the attributes listed in the table of TextView XML attributescan be used in a style definition for a TextView element (or one of its subclasses). One of the attributes listed in the reference is android:inputType, so where you might normally place the android:inputType attribute in an<EditText> element, like this:

<EditText
    android:inputType="number"
    ... />

找某个view的可能style:
查找该类的 XML attributes属性

如果找所有的: For a reference of all available style properties, see the  R.attr  reference.
也即这里: http://developer.android.com/reference/android/R.attr.html



一套Theme里面可以包括的style属性

A list of the standard attributes that you can use in themes can be found at  R.styleable.Theme .



Android系统本身已经提供的大量的theme

The Android platform provides a large collection of styles and themes that you can use in your applications. You can find a reference of all available styles in the  R.style  class.
int Theme_Holo_Dialog_NoActionBar_MinWidth Variant of Theme.Holo.Dialog.NoActionBar that has a nice minimum width for a regular dialog.
注意上面左边绿色字体是我们代码中的写法,右边蓝色是其实际的值。

系统已经提供了大量Theme
  1. R.style for Android styles and themes

但又说文档并不全面,因为没有给出细节,如果要看细节的话,看下面两个style和theme的源代码链接:

The R.style reference, however, is not well documented and does not thoroughly describe the styles, so viewing the actual source code for these styles and themes will give you a better understanding of what style properties each one provides. For a better reference to the Android styles and themes, see the following source code:

These files will help you learn through example. For instance, in the Android themes source code, you'll find a declaration for <style name="Theme.Dialog">. In this definition, you'll see all of the properties that are used to style dialogs that are used by the Android framework.



系统缺省的theme和IDE开发环境自动配置的theme

看到这样一段话: Beginning with Android 3.0 (API level 11), the action bar is included in all activities that use the  Theme.Holo  theme (or one of its descendants), which is the default theme when either the targetSdkVersion  or  minSdkVersion  attribute is set to  "11"  or greater. For example:

也即,在API level 11之后,就有缺省的theme了,而且这个缺省的"Theme.Holo"里面还包括了ActionBar等。

经过多次建新项目的尝试,发现有两类自动的style添加:
1、Android系统自行添加的theme,跟版本有关,如上所提及。注意,这些自行添加的东西在项目代码或配置文件中没有找到,可能是在android系统自己的framework里面自行添加的,故不能删除,只能通过程序代码将其关掉。
2、IDE开发环境在创建项目时,可以通过项目配置来添加theme。注意这个添加的theme在项目代码或配置文件中可以看见,故可以直接代码修改。


style和theme的继承和修正

1、系统提供的style可以继承并修正:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">monospace</item>
    </style>
</resources>
可见继承使用了 parent标示。注意系统内部也一样使用“.”来继承,可能这种方法不能跨越系统和自定义。

2、自定义的也可以继承和修正,但是格式不同,使用“.”来表示继承:
<style name="CodeFont.Red">
        <item name="android:textColor">#FF0000</item>
    </style>

3、应用style到view:
<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

4、应用theme到application或activity:
<application android:theme="@style/CustomTheme">
<activity android:theme="@android:style/Theme.Dialog">

5、目录名和平台版本(API Level)对应,平台版本升级后自动对应自己的目录:

For example, here is the declaration for a custom theme which is simply the standard platforms default light theme. It would go in an XML file under res/values (typically res/values/styles.xml):

<style name="LightThemeSelector" parent="android:Theme.Light">
    ...
</style>

To have this theme use the newer holographic theme when the application is running on Android 3.0 (API Level 11) or higher, you can place an alternative declaration for the theme in an XML file in res/values-v11, but make the parent theme the holographic theme:

<style name="LightThemeSelector" parent="android:Theme.Holo.Light">
    ...
</style>

Now use this theme like you would any other, and your application will automatically switch to the holographic theme if running on Android 3.0 or higher.

但是感觉这个用目录的方法不太好,不太规范,还是用变量之类较好。
 
FP7195升降压恒流驱动IC:从AC/DC 12~24V输入到稳定输出的高效电源设计实战 本文详细解析FP7195升降压恒流驱动IC的工作原理与应用实战。该芯片支持4.5V-32V宽输入范围,能自动切换升降压模式并保持输出恒定,特别适用于车载LED照明、工业电源等电压波动场景。通过实际案例分享PCB布局、元件选型及调试技巧,帮助工程师实现高效稳定的电源设计。 阅读详情

相关推荐

智能车竞赛模糊PID代码与使用方法

本文给出了模糊PID的代码,以及模糊PID的程序使用方法、参数调整方法

piginthesouth的博客 9123

android子模块,Android Gradle主项目和子模块风格

我有一个主要的Android项目,具体取决于子模块.主项目具有Gradle中定义的风味.子模块还定义了一些样式.这应该合乎逻辑-能够在两个项目中都具有特色.例如在子模块中:productFlavors {flavorName {}}但这不起作用-构建崩溃,并显示一条消息,指出在主项目中找不到子模块资源.但是,当我从子模块中删除口味时,一切正常.在为子项目定义风味时,似乎混合了构建顺序,这是真的吗?...

weixin_34052529的博客 360

Grafana企业版vs开源版:从安装到插件管理的完整对比实测(含离线部署技巧)

本文深入对比Grafana企业版与开源版在安装流程、插件管理和功能限制等方面的差异,特别针对离线部署场景提供实用技巧。通过实测数据源支持、权限管理等核心功能,帮助企业用户做出明智选择,同时详细介绍离线安装和插件签名验证等关键操作。

weixin_29313817的博客 104

Android——Theme和Style-由浅入深,全面讲解

Theme和Style-由浅入深,全面讲解

6897

Fortran基础编程(3)——格式化输出

本篇推文将进一步讲解Fortran基础语法中格式化输出与声明部分,让我们的代码更加美观起来吧~

qq_45715554的博客 3826

某AI推荐系统项目管理复盘:架构师总结的6大方法论与调优策略

我是张三,某大厂资深AI架构师,主导过5个千万级用户的推荐系统项目(覆盖电商、内容、视频、音乐、外卖等场景)。我的公众号“AI架构师笔记”会分享更多AI项目管理和技术实战经验,欢迎关注。最后的话:推荐系统不是“一锤子买卖”,而是“持续优化的过程”。希望这篇文章能帮你少踩坑,多做对——毕竟,把复杂的事做成,才是架构师的核心能力。

2501_92132293的博客 362

Android Studio 新版本的 values和values-night目录下内容说明

Android Studio目录下的values和values-night目录的说明

adminstate的博客 1918

Vue3 - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、回放、放大缩小画面、视频画面截图、截屏抓拍、摄像头控制,实时推流及播放器解决延迟卡顿等问题(详细代码)

vue3,nuxt3,海康威视,海康监控,摄像头监控,实时监控画面,海康插件,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,vue3对接海康监控设备,无法连接,报错,vue3对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,特别卡不流畅怎么办,解决无法推流,录像,连接不上,vue3,海康,vue海康视频监控,

🏆 前端领域优质创作者 1万+

android 多个style,看完后彻底搞清楚Android中的 Attr 、 Style 、Theme

相信这三个词对于Android开发者来说是十分熟悉了,那么你对他们到底有多了解呢?回忆起我刚开始接触Android的时候对这三个词有一些迷惑,有些时候只知道一些基本的使用,总之是有迷惑把。不能说的很清楚!今天就来仔细说说这三个词,总的说来 attr、style、theme都是用来表达样式风格的,只是范围不一样。下面我们来具体的一个一个的说明。本来写的时候没想多会牵扯这么多内容,因为在写的过程,考虑...

weixin_30877689的博客 824

AI 时代嵌入式工程师的能力模型与学习路线:全系列收官

AI 时代嵌入式工程师的能力模型与学习路线:全系列收官

weixin_42162924的博客 34

FANUC机器人通过ROBOGUIDE实现与实际的机器人进行程序导入导出的具体方法示例

FANUC机器人通过ROBOGUIDE实现与实际的机器人进行程序导入导出的具体方法示例

Robot_PLC_HMI_Automation 6535

TODO:android 属性可以使用多个style么?

待验证

hugoshine的专栏 1273

3、提升管壳式换热器能效:双螺旋盘管的应用研究

本研究探讨了在管壳式热交换器中应用双螺旋盘管以提升能效的可行性。通过实验对比双螺旋与单螺旋盘管的热传递效率,结果显示双螺旋盘管达到54.33%的效率,显著优于单螺旋的48.88%。双螺旋结构不仅增大了换热面积,还因产生剪切应力而减少结垢,延长运行周期。采用NTU方法评估热传递性能,验证了该设计在工业应用中的高效性与实用性,建议在制冷、空调、石油精炼等领域推广使用。

k8s6orchestrator的博客 107

android api 指南-Styles and Themes

  style是一些属性值得集合,这些属性值用来指定一个view 或者 window 的外观和格式。style可以只指定height,padding,font color,font size,background color,和很多其他属性。style 定义在xml资源文件中,与layout xml 文件独立开的。android中的style与web中的css有相似的设计哲学-允许设计样式和内容的...

weixin_34124939的博客 135

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2024年安卓最新安卓自定义theme以及attrs,styles资源文件详解(一),2024年最新面试时有哪些技巧

由于题目很多整理答案的工作量太大,所以仅限于提供知识点,详细的很多问题和参考答案我都整理成了 PDF文件网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2301_82241983的博客 408

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

2024年安卓最新Android界面开发之样式定义(Defining Styles),2024年最新纪检委面试真题解析

其实很简单就下面这张图,含概了Android所有需要学的知识点,一共8大板块:架构师筑基必备技能Android框架体系架构(高级UI+FrameWork源码)360°Androidapp全方位性能调优设计思想解读开源框架NDK模块开发移动架构师专题项目实战环节移动架构师不可不学习微信小程序混合开发的flutterAndroid学习的资料我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。

2401_84520401的博客 863

[android]theme命名规

对于android项目,一般都需要自定义theme,好使整个android项目有自己独特的风格,不过现实中很多android项目theme和style定义命名如此混乱。 为了保证清楚一般可以采取以后几个步骤: 1.style和theme分开为两个文件。    一般需要在values下面有两个文件,一个是styles.xml,themes.xml, 有个甚至还需要好几个,千万不要把style和

lskycity的专栏 983

Android 使用Theme实现动态切换主题详细教程

本文主要介绍通过Theme切换主题。Android通过AssetManager来加载皮肤包,用皮肤包里的资源替换现有资源达成换肤效果。对此暂时没有深入研究,留作以后填写,不再赘述。Android 通过在activity中使用 setTheme()函数来设置背景样式,通过加载styles.xml里的样式来设置Android 应用的主题。(注意:需要在 setContentView(R.layout.activity_main);之前调用setTheme)

2401_84149220的博客 925

Android DayNight主题深度解析与全链路适配指南

Android深色模式(Night Mode)并非简单切换颜色,而是基于DayNight主题框架的系统级资源加载机制。其核心原理在于AppCompatDelegate通过ContextWrapper代理Resources,在运行时根据UI Mode动态匹配values-night等配置目录下的color、drawable、dimen等资源。该机制保障了从TextView文本色到自定义View绘制色的一致性响应,技术价值体现在跨版本兼容性、无障碍支持与Material You动态色彩协同能力。典型应用场景包括

weixin_30522183的博客 349

Obsidian 多端同步不再难:四大方案选型与实战配置

笔记软件的核心价值在于本地优先与数据自由,而多设备间的文件同步则是支撑这一体验的关键基础设施。绝大多数笔记工具基于 Markdown 文件存储,同步的本质就是让这些文件在多端保持一致,并妥善处理冲突。面对不同平台的沙盒限制、网盘占位机制、配置目录冲突等挑战,常见的同步技术路径包括 WebDAV 协议、点对点同步以及版本控制系统。WebDAV 方案以坚果云作为国内网络环境下稳定可达的存储后端,搭配 Remotely Save 插件即可实现双向同步;Syncthing 则通过点对点直连保障隐私与局域网内接近实时

weixin_33946020的博客 294

Cursor 试用重置教程:3 步免重装找回免费额度

当你正准备让 Cursor 帮忙重构代码,屏幕上却跳出 “Too many free trial accounts used on this machine” 的提示,这种无奈应该不少人体会过。开源项目 go-cursor-help 干的就是这一件事:不用重装,帮你的机器做一次 Cursor 试用重置,把 Cursor 用来计数试用的设备身份换掉,让免费额度重新可用。 重装软件或者换机器,折腾不

gitblog_00923的博客 1095

Obsidian Vault入门:一文搞懂仓库本质与实战用法

在个人知识管理领域,Markdown笔记工具正逐渐成为高效记录与整理信息的主流选择。其中,Obsidian 的 Vault(仓库)概念常让新手困惑——它并非云数据库,而是一个本地文件夹,所有笔记均为纯文本 .md 文件。理解这一基本原理后,便可掌握其核心价值:数据完全自主可控、迁移成本极低,且支持双向链接与关系图谱,能构建网状知识结构。从创建仓库、编写第一篇笔记,到标签检索、多端同步与插件扩展,Obsidian 提供了一套轻量但强大的知识管理方案。无论是学习笔记、项目文档还是写作素材,只要遵循“文件夹即结构

weixin_34234721的博客 400

android 多个style,Android样式的开发_style篇

前面铺垫了那么多,终于要讲到本系列的终篇,整合所有资源,定义成统一的样式。哪些该定义成统一的样式呢?举几个例子吧:每个页面标题栏的标题基本会有一样的字体大小、颜色、对齐方式、内间距、外间距等,这就可以定义成样式;很多按钮也都使用一致的背景、内间距、文字颜色、文字大小、文字的对齐方式等,这也可以定义成样式;网络加载的进度条基本也都是一样的,同样可以定义成样式;不喜欢系统的弹出框样式,那也可以自定义样...

weixin_28702613的博客 680

android 多个style,Android style详解

样式的定义Android的样式一般定义在res/values/styles.xml文件中,其中有一个根元素,而具体的每种样式定义则是通过下的子标签来完成,通过添加多个来设置样式不同的属性。另外,样式是可以继承的,可通过标签的parent属性声明要继承的样式,也可通过点前缀 (.) 继承,点前面为父样式名称,后面为子样式名称。点前缀方式只适用于自定义的样式,若要继承Android内置的样式,则只能通...

weixin_36264801的博客 974

Android中多个style,Android Studio自动提取控件Style样式教程

如题,有时候看见一个布局写上几百行看上去会非常吃力麻烦,这时候抽取控件样式很有必要了, Android Studio提供了抽取Style样式的方式, 可能是藏的太深了, 很少人用光标放在控件内: 右键 –>Refactor –> Extract –>Style…选择之后弹出对话框:如果你用的很多, 也可以为它设置快捷键:打开Android Studio设置页面, 在Keymap中...

weixin_28818643的博客 596

Android中动态设置多继承Style/Theme

在Android中经常会使用继承style,举个例子: 这里设置了两个style <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark

冰冻三尺,非一日之寒。 3373

Android styles.xml文件属性笔记

关于启动背景和透明状态栏&lt;resources&gt; &lt;!-- Base application theme. --&gt; &lt;style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"&gt; &lt;!-- Customize your theme here. --&gt;...

久不见天晴的博客 5万+
上一篇: 最简整理Binder Driver
下一篇: Golang中new和make的区别
Max2005
博客等级 码龄22年 45粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值