Android 自定义theme

android通过自定义theme个性化标题栏并且文字居中 安卓默认的标题栏黑乎乎非常难看。不过可以通过theme来自定义标题栏样式。在一次项目中需要把颜色修改为蓝色,高度40dp,标题文字居中的效果。步骤如下:1.首先在values文件夹下创建colors.xml文件,内容如下: #ff004B97 2.在styles.xml文件中添加以下代码: #fff 18sp bold 阅读详情

Android的Theme个人理解其实就像是网页中的CSS,甚至连标签的名字都感觉是一样的,如style标签。

通常在APK开发的过程中,对UI/UE设计好的UI界面进行实现一定会用到styles, 看有的博客上写到style和theme,

其实无论是style还是theme都是对view控件的显示属性进行控制,区别在于影响范围的大小,Theme针对的是Application,

Activity等大的控件,影响的是整个APP,或者某个界面的整体风格;而普通命名的style针对类似Button, TextView等较小的控件。

也可以做如下理解:

  1. Theme是针对窗体级别的,改变窗体样式;通过android:theme应用于AndroidManifest中的Application或者Activity节点。
  2. Style是针对窗体元素级别的,改变指定控件或者Layout的样式;通过style或者@style/XX应用于指定控件。
因此在定义theme和style的时候,可以使用的属性是不一样的,自定义的时候可以参考Android原生的theme和style,路径如下

Lollipop/frameworks/base/core/res/res/values/themes.xml

Lollipop/frameworks/base/core/res/res/values/styles.xml

同java中的继承一样,theme和style都有parent属性,可以通过继承来同样拥有其parent的属性设置,如果如果重新设置parent中已经

设置的属性则以重设置的为准,例如

<style name="Widget.ListView" parent="Widget.AbsListView"> 


自定义theme的基础步骤

1.在res/values目录下创建styles.xml。

   这个xml的名字不一定要叫做styles,你可以取任意的名字,重点是xml文件中的内容。个人理解values下的xml文件的

   名字只不过起到区分不同类型资源的作用,如String资源可以放在strings.xml里,style资源可以放在styles.xml里等。

2.styles.xml文件首行写上xml文档的声明,主要包括xml版本号和编码格式的声明,例如

 <?xml version="1.0" encoding="utf-8"?>

  这个声明不是必须的,但是如果要写就必须写在xml文件的首行, XML声明参考MSDN,在Andriod平台也验证过,

  XML声明并非必须。

3.在styles.xml中设计style标签中相关item的值,例如:

  Android4.4上的BrowserTheme的写法,这里没有将XML的声明贴出来。

16<resources>
17    <style name="BrowserTheme" parent="@android:Theme.Holo">
18        <item name="android:windowBackground">@color/white</item>
19        <item name="android:colorBackground">#FFFFFFFF</item>
20        <item name="android:windowActionBar">true</item>
21        <item name="android:windowNoTitle">false</item>
22        <item name="android:actionBarStyle">@style/ActionBarStyle</item>
23        <item name="android:actionBarSize">56dip</item>
24    </style>
25    <style name="Suggestions" parent="@android:style/Widget.Holo.AutoCompleteTextView">
26    </style>
27    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.ActionBar">
28        <item name="android:background">@drawable/bg_browsertabs</item>
29        <item name="android:displayOptions"></item>
30    </style>
31</resources>
如上自定义BrowserTheme中设定了window的背景色,其parent为android:Theme.Holo,也就是说如果不进行修改,其默认为android4.4原生的

Theme.Holo风格。而style标签的下级标签item中的设定则是自定义的意义所在,其设定了Browser的界面是否有Tile和ActionBar,以及ActionBar的

风格。

另,Style资源定义的语法参考Android Developer官网。

4.在styles.xml中将Theme相关的Item都已经设计完成之后就可以应用到Application,或者Activity等上了,应用Theme的方式主要有两种:

  1) 在AndroidManifest.xml中进行静态设定Theme,例如:

75        <activity android:name="BrowserActivity"
76                  android:label="@string/application_name"
77                  android:launchMode="singleTask"
78                  android:alwaysRetainTaskState="true"
79                  android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|mnc|mcc"
80                  android:theme="@style/BrowserTheme"
81                  android:windowSoftInputMode="adjustResize" >

  如上,给BrowserActivity设定了BrowserTheme,这样BrowserActivity的风格就是之前自定义的风格了。

  2)通过java代码进行Theme的设置,使用Context的setTheme这个接口来实现,用java代码来实现Theme的动态设定,在Activity的onCreate中进行调用,

必须在所有界面元素初始化之前进行调用,因此可以将setTheme放在setContentView之前进行调用,否则setTheme将不会生效,例如:

      setTheme((int)(this.getIntent().getExtras().getFloat("themeResId")));//这里我将intent中带过来的themeResId设置为当前Activity的theme,是为类保持两个Activity的风格一致。

      setContentView(R.layout.hello_world_plugin);


  binggo,自定义theme就完成啦,简单吧。

FAQ

1.style标签下的每一个item都用来定义view的某个显示属性的值,那么这些属性名都有哪些,怎么查找呢?

  首先确定该style是为哪个控件设计的,然后直接到Android Developer上查看该控件的XML Attributes,

  例如查看在设计TextView控件的显示效果时,可以查看该类的XML Attributes,其它控件类推。

  这里面Activity的比较特殊,可以到APIGuide->APP Manifest->Activity中查找

2.为什么setTheme一定要在setContentView之前调用才会生效?

答案后续添加。。。。

Android主题编程:深入了解Theme主题 通过定义主题,开发人员可以自定义应用程序的颜色、字体、背景等外观属性,为应用程序增添个性化的风格。本文将详细介绍Android中主题的概念和使用方法,并附上相应的源代码示例。通过以上方法,开发人员可以根据应用程序的需求定义和应用主题,实现个性化的外观效果。在Android中,主题使用XML文件进行定义,通常存放在res/values目录下的styles.xml文件中。属性的值,可以将主题应用于整个应用程序。一旦主题定义完成并应用于应用程序,可以在布局文件中使用主题属性。标签用于定义主题的属性,如。 阅读详情

相关推荐

Android自定义Activity切换动画的Theme应用

在Android开发中,动画资源文件是实现界面元素动效的核心组件,通过它们可以轻松创建出平滑、吸引用户注意力的动画效果。理解动画资源文件的类型、用途以及它们在文件系统中的组织形式是构建复杂动效的基础。补间动画是通过XML文件定义的,其中包含了动画的详细信息。例如,创建一个淡入淡出的动画:在上述代码中,fromAlpha和toAlpha属性定义了动画的起始和结束透明度,duration属性定义了动画持续的时间,单位是毫秒。

weixin_36431145的博客 1055

Launcher3源码分析之布局分析

Launcher3中会在Launcher.java中加载主布局launcher.xml <com.android.launcher3.LauncherRootView xmlns:android="<http://schemas.android.com/apk/res/android>" xmlns:launcher="<http://schemas.a...

一个小菜鸟的成长之路的专栏 1758

2026四款AI原生IDE实测:Trae、Qoder、CodeBuddy、Cursor能力边界深度解析

AI原生IDE正从代码编辑器演进为开发者智能工作流中枢,其核心在于对上下文理解、AST编辑意图建模与多模态任务调度的工程化实现。区别于传统插件式AI辅助,真正的AI原生IDE需具备知识库嵌入、符号图索引、操作链固化等底层能力,从而支撑Figma转码、N+1查询修复、跨语言迁移等复杂场景。Trae强调中文语境与企业规范的强绑定,Qoder聚焦AST级编辑轨迹预测,CodeBuddy通过IDE/插件/CLI三态划分控制权边界,Cursor则以云端Agent实现开发任务的时空并行。本文基于真实项目压测,揭示免费版

ctk87443的博客 2454

android 自定义 theme,Android添加系统自定义主题theme

最终修改的文件如下:Changes not staged for commit:(use "git add ..." to update what will be committed)(use "git checkout -- ..." to discard changes in working directory)modified: ../../../api/current.txtmodif...

weixin_27215403的博客 548

深入浅出横向联邦学习、纵向联邦学习、联邦迁移学习

深入浅出解析横向联邦学习(Horizontal Federated Learning)、纵向联邦学习(Vertical Federated Learning)和联邦迁移学习(Federated Transfer Learning)有多个机构(比如几家不同的银行,或者几家医院)都拥有一些数据,他们希望联合起来训练一个更强大的机器学习模型,但出于隐私保护或法规要求,他们不能直接把数据共享出来。联邦学习就是为了解决这个问题而提出的。它的核心思想是“数据不动模型动”,即数据保留在本地,参与方共同训练模型。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 2460

汽车BMS技术分享及其HIL测试方案

在全球碳中和目标的战略驱动下,新能源汽车产业正以指数级速度重塑交通出行格局。动力电池作为电动汽车的"心脏",其性能与安全性不仅直接决定了车辆的续航里程、使用寿命等关键指标,更深刻影响着消费者对电动汽车的市场接受度。而电池管理系统(Battery Management System, BMS)是动力电池安全运行与性能释放的核心技术支撑。

Speedgoat的博客 2684

ThemeFramework 主题切换框架实现

ThemeFramework 文章目录ThemeFramework前言介绍主要特点快速开始常用方法FragmetDialogListView 和 RecyclerView动态添加 View主题切换事件监听单个 View 主题设置监听扩展支持的 View 类型View 类型支持情况架构实现思路和原理主题切换实现实时切换主题的场景确定方案核心实现LICENSE 前言 写了一个主题切换框架,在这里毛遂自荐一下,小伙伴们看看有没有用,欢迎批评指正。 下面是项目的 README.md 自述文件。 介绍 Android

l0neman 的博客 1450

nvidia-container-toolkit 国内镜像源安装

nvidia-container-toolkit 国内镜像源安装

湫然的博客 1万+

Android系统自带theme

<br /> Android 本身自带了一些 Theme ,可以在frameworks/base/core/res/res/values/themes.xml中找到<br /> <br />•android:theme="@android:style/Theme.Dialog"   将一个Activity显示为能话框模式<br />•android:theme="@android:style/Theme.NoTitleBar"  不显示应用程序标题栏<br />•android:theme="@androi

iamfafa的专栏 1169

亚马逊(Amazon ads)广告API申请步骤(已经更新完)

你如果是自己的店铺使用,就选择左边的、如果是授权的那种给别人用就选右边的。审核通过了才能进行下一步,我目前就是刚申请完,后续会持续更新!然后会调整到,下面的页面,选择Agency然后右上角点击创建。审核通过会发邮件到你的企业邮箱、时间大概是1-7天左右。输入对应的信息,点击提交审核,就可以开始申请了。1、广告平台跟卖家平台是分开的,这个概念要清楚。2、注册广告一定要用企业邮箱!回到首页,点击成为合作伙伴。注册了以后会跳转到广告。然后再点击加入合作伙伴。然后会弹出下面的页面。

阿泽的博客 5655

倍福--实现TCP/IP的配置

控制器为CX5120,需要和上位机做通信,选择TCP/IP的通讯方式,本文介绍TCP/IP通信的操作步骤。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 1.2. 串口调试助手 3 1.2.1. TCP调试通信助手 3 授权文件 3 2.1 Lib文件 3 2.2. CAB文件 4 PLC程序编写 4 3.1. 引入TCP/IP库文件 4 3.2. Client端程序 5 3.2.1. 建立相关变量 5 3.3.2. 编写连接功能块

weixin_41883890的博客 5730

android 自定义theme,android中自定义主题style的使用,app风格Theme自定义

android中可以自定义主题和风格。首先,style和theme都是资源,android提供了很多这样的默认资源。风格,也就是style,我们可以将一些统一的属性拿出来,比方说,长,宽,字体大小,字体颜色等等。可以在res/values目录下新建一个styles.xml的文件,在这个文件里面有resource根节点,在根节点里面添加item项,item项的名字就是属性的名字,item项的值就是属...

weixin_35651612的博客 1354

动手在 SAP BTP Cloud Foundry 开发和部署 SAP UI5 应用的前置条件 - 订阅 SAP Build Work Zone Standard Version

摘要:本文介绍了SAP BTP Cloud Foundry环境中HTML5应用的概念,区分了web应用、HTML5应用和SAP UI5应用的关系。重点说明了在Cloud Foundry环境部署HTML5应用的方法是通过订阅SAP Build Work Zone standard edition服务,并详细描述了订阅过程中可能遇到的"OIDC trust missing"错误。该错误是由于业务用户认证需要配置SAP Cloud Identity Services的OpenID Connec

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 312

android 自定义style里 item,安卓自定义theme以及attrs,styles资源文件详解(一)

本篇文章简单介绍自定义主题。一、背景介绍安卓自带各种基础的主题android:theme=”@android:style/Theme.Dialog” : Activity显示为对话框模式android:theme=”@android:style/Theme.NoTitleBar” : 不显示应用程序标题栏android:theme=”@android:style/Theme.NoTitleBar....

weixin_32191249的博客 1087

端到端自动驾驶:特斯拉FSD Beta技术拆解

端到端自动驾驶:特斯拉FSD Beta技术拆解 ,人工智能,计算机视觉,大模型,AI,这篇文章围绕特斯拉FSD Beta的端到端自动驾驶技术展开,先介绍端到端自动驾驶的定义、与传统方案的区别及FSD Beta的特点,再阐述其硬件基础、技术架构,解析关键技术,还涉及训练数据与标注、安全与冗余设计、实际应用场景与挑战以及技术迭代与更新等内容,展现了该技术的多方面情况。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android 关于自定义Theme

android系统给我们定义了好多的Theme和Style. android 自带的主题theme •android:theme="@android:style/Theme.Dialog"   将一个Activity显示为能话框模式 •android:theme="@android:style/Theme.NoTitleBar"  不显示应用程序标题栏 •android:theme="@a

xiabo852105的专栏 455

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android 添加自定义theme和style

在资源文件vaule目录中添加文件theme.xml,内容如下:             parent="android:Theme">         @drawable/myselfdrawable         #0000ff           10sp           bold          myselfdrawable 可以是图片,也可以是文

井欢欢的专栏 1590

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android中自定义主题风格theme.xml

在Android中可以通过自定义主题风格方式来实现个性化以及复用,首先我们创建theme.xml主题文件,保存位置为工程的 res/values/theme.xml ,这里我们可以可以为主题起一个名称,比如CWJ,这里去除了xml的文件头这行,我们在工程中只需在androidmanifest.xml文件的Activity节点中加入 android:theme=”@style/Theme.CWJ”

o0寂寞的泡沫0o的专栏 6474

android自定义theme红色主题,[转]Android系统自带主题(android:theme)

1、系统自带:将样式代码放置在应用的AndroidManifest.xml的activity中,代码格式为:android:theme="@android:style/Theme.Dialog"或者在onCreate()调用之前被调用setTheme()函数:setTheme(R.style.Theme_Dialog);---------------------------------------...

weixin_33043471的博客 546

android中自定义主题style的使用,app风格Theme自定义

android中自定义主题style的使用,app风格Theme自定义 泡在网上的日子 发表于2012-10-09 00:07, 第 818 次阅读 摘要 android中可以自定义主题和风格。首先,style和theme都是资源,android提供了很多这样的默认资源。风格,也就是style,我们可以将一些统一的属性拿出来,比方说,长,宽,字体大小,字体颜色等等。可以在res

vasal的专栏 1832

【Android】常用对话框大全(三)自定义Dialog的三种方式(Theme,PopupWindow,Dialog)

Android Dialog自定义的方式辣么多,你掌握了多少种呢?

宾有为的博客 2463

android 用自定义样式设计界面,Android Style开发之Theme

1概述Theme是针对窗体设计的,用以改变窗体样式;Style是针对窗体元素的,用以改变指定控件或layout的样式。Android系统的themes.xml和style.xml文件位于frameworks/base/core/res/res/values中。里面涉及到很多.9.png文件,路径位于frameworks/base/core/res/res/drawable-hdpi2 系统主题分类...

weixin_39875167的博客 555

android 主题xml,自定义Android主题风格theme.xml方法 Android开发技术

自定义Android主题风格theme.xml方法 Android开发技术2013 年 5 月 23 日在Android中可以通过自定义主题风格方式来实现个性化以及复用,首先我们创建theme.xml主题文件,保存位置为工程的res/values/theme.xml ,这里我们可以可以为主题起一个名称,比如CWJ,这里去除了xml的文件头这行,我们在工程中只需在androidmanifest.xm...

weixin_34072003的博客 1674

android自定义theme

转载自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1009/422.html android中可以自定义主题和风格。首先,style和theme都是资源,android提供了很多这样的默认资源。风格,也就是style,我们可以将一些统一的属性拿出来,比方说,长,宽,字体大小,字体颜色等等。可以在res/values目

lkx94的专栏 493

【Android】自定义theme解决进入app闪黑屏问题

每次启动app时总会闪一下黑屏,时间很短,一闪而过但是还是可以看的很清楚,虽然不影响运行,但是用户体验性极差,效果如图。 初感觉是app加载的问题,网上查相关资料后,该问题出现还是跟Activity生命周期有关的。通常情况,我们都是在onCreate或是onResume中设置显示界面,所以在这之前会有一段空白期,这就是黑屏期。 解决方法就是自定义theme用于启动的activity,其

qq_34575250的博客 665

Android 自定义attr Style styleable以及其应用,应用界面主题Theme使用方法

Android 自定义attr Style styleable以及其应用,应用界面主题Theme使用方法 http://www.jianshu.com/p/61b79e7f88fc 相信每一位从事Android开发的猿都遇到过需要自己去自定义View的需求,如果想通过xml指定一些我们自己需要的参数,就需要自己声明一个styleable,并在里面自己定义一些attr属性,这个过程相信大家...

snail201211的博客 507
上一篇: ClassLoader入门理解
下一篇: Android通过共享用户ID来实现多个Activity进程共享
AnnaLoad
博客等级 码龄17年 7粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值