`

总结一下Android中主题(Theme)的正确玩法

阅读更多

 

摘自:http://blog.csdn.net/u011791526/article/details/52066031

在AndroidManifest.xml文件中有<application Android:theme="@style/AppTheme">,其中的@style/AppTheme是引用的res/values/styles.xml 中的主题样式,也有可能是引用的 res/values-v11/styles.xml 或者 res/values-v14/styles.xml,这是根据运行此程序的手机系统来决定的,如果手机系统的API版本是11以上就是v11/styles.xml,以此类推。在values/styles.xml中你会发现AppTheme的主题样式又是继承自AppBaseTheme,而AppBaseTheme的父主题就各有不同了,你也可以从这个位置来自己修改主题,此文章主要就是来讨论这个主题如何修改。

需要注意的是,做为初学者或者专门来研究主题(Theme),你最好是删除values-v11和values-v14以及values-vXX,以免被这些东西所干扰。

 

主题的来源有三个:

1) 来自android系统自带的

2) 来自兼容包的(比如v7兼容包)

3) 你自己写一个主题

这里主要探讨前两者,自己写主题不探讨。

 

使用android系统中自带的主题要加上“android:”,如:android:Theme.Black
使用v7兼容包中的主题不需要前缀,直接:Theme.AppCompat

 

在Android Studio中书写主题时都会有自动提示,而在Eclipse不会有自动提示


解决办法是不要写“android:Theme.Black”,而是写“@android:style/Theme.Black”这样就会有提示
不要写“Theme.AppCompat”,而是写“@style/Theme.AppCompat”

因为 style(@android:style/Theme.Black) 与 theme(android:Theme.Black) 在使命上还是有区别的,所以在eclipse中书写时为了出现自动提示,可以写“@android:style/Theme.Black”,但是写完了之后,记得手动的改为“android:Theme.Black”

 

现在看看有些什么主题

系统自带主题:
API 1:
android:Theme 根主题
android:Theme.Black 背景黑色
android:Theme.Light 背景白色
android:Theme.Wallpaper 以桌面墙纸为背景
android:Theme.Translucent 透明背景
android:Theme.Panel 平板风格
android:Theme.Dialog 对话框风格

API 11:
android:Theme.Holo Holo根主题
android:Theme.Holo.Black Holo黑主题
android:Theme.Holo.Light Holo白主题

API 14:
Theme.DeviceDefault 设备默认根主题
Theme.DeviceDefault.Black 设备默认黑主题
Theme.DeviceDefault.Light 设备默认白主题

API 21: (网上常说的 Android Material Design 就是要用这种主题)
Theme.Material Material根主题
Theme.Material.Light Material白主题


兼容包v7中带的主题:
Theme.AppCompat 兼容主题的根主题
Theme.AppCompat.Black 兼容主题的黑色主题
Theme.AppCompat.Light 兼容主题的白色主题

 

Theme.AppCompat主题是兼容主题,是什么意思呢?

意思就是说如果运行程序的手机API是21则就相当于是Material主题,如果运行程序的手机API是11则就相当于是Holo主题,以此类推

 

兼容包v7会被Google公司不断升级:
比如 appcompat-v7-21.0 表示升级到向 API 21 兼容
比如 appcompat-v7-23.2 表示升级到向 API 23 兼容


在eclipse中只能看到 appcompat_v7 后面没有跟API的版本号,如何识别呢?
可以在eclipse中展开v7项目的res文件夹,查看有没有values-21、values-23这样的文件夹,最大数字就是API版本号了。


所以同样是v7兼容包,会有API版本号不同的区别,要注意。

 

所有能应用于应用程序主题都是以“Theme.”开头
不是以“Theme.”开头的就不是应用程序主题,而是用于某些局部控件
比如“ThemeOverlay”主题,可用于 Toolbar 控件,这里不做深入分析了。
比如“TextAppearance”主题,可用于设置文字外观,这里不做深入分析了。
比如在v7中有很多以“Base”开头的主题,是一些父主题,不建议直接使用。

 


更多主题:
以下都是指“包含”,比如包含“Dialog”表示对话框风格
比如Theme.Dialog、Theme.Holo.Dialog、Theme.Material.Dialog、Theme.AppCompat.Dialog都是对话框风格
具体有没有这种组合,你就在“自动提示”中来看就可以,提示有就有,没有就没有。

Black 黑色风格
Light 光明风格
Dark 黑暗风格
DayNight 白昼风格
Wallpaper 墙纸为背景
Translucent 透明背景
Panel 平板风格
Dialog 对话框风格
NoTitleBar 没有TitleBar
NoActionBar 没有ActionBar
Fullscreen 全屏风格
MinWidth 对话框或者ActionBar的宽度根据内容变化,而不是充满全屏
WhenLarge 对话框充满全屏
TranslucentDecor 半透明风格
NoDisplay 不显示,也就是隐藏了
WithActionBar 在旧版主题上显示ActionBar

很多主题在使用时会报错,原因有很多,比如窗体必须继承AppCompactActivity,或者要继承ActionBarActiivty,或者要继承FragmentActivity,或者需要手动指定宽高,或者需要提升最低API版本,或者需要更高版本的SDK,或者兼容包版本不对等原因。

 

使劲折腾吧!!!

 

写得不好,请批评指正。

分享到:
评论

相关推荐

    Androidstudio theme 主题

    本文将深入探讨Android Studio中的主题(Theme)概念以及如何利用第三方主题提升开发体验。 Android Studio的主题主要指的是应用程序的视觉样式,包括颜色、字体、布局等方面。主题可以在全局范围内统一应用,使得...

    总结一下Android中主题.zip_android

    本文将深入探讨Android中的主题应用及其正确玩法,旨在帮助开发者更好地理解和利用这一特性。 1. **主题的基本概念** 主题是Android应用程序界面的全局样式设置,它定义了UI组件的颜色、字体、大小、布局等属性。...

    android_studio_theme集合包

    在"android_studio_theme集合包"中,用户可能发现各种各样的主题,比如简洁的白色主题、深色的夜间主题,甚至是一些具有创意色彩的主题。下载并导入这些主题后,开发者可以根据自己的喜好和工作需求自由切换,以获得...

    android studio (as)主题theme

    1. **主题概念**:在Android Studio中,主题主要指的是界面的色彩方案、字体样式以及整体布局等视觉元素的集合。通过更换主题,开发者可以根据个人喜好或工作需求调整工作环境,使其更加符合自己的审美和操作习惯。 ...

    android 主题(Theme)实现

    在Android开发中,主题(Theme)是应用全局样式和外观的重要组成部分。它们允许开发者通过一套统一的视觉风格来定制应用程序的界面元素,如颜色、字体、控件样式等,而无需在每个单独的Activity或布局文件中进行重复...

    android theme 皮肤主题 的应用

    总结,Android主题和皮肤主题的应用涉及资源文件的管理、XML样式定义、代码中主题的设置和切换、第三方库的利用,以及动态主题切换和皮肤包的打包分发。理解并掌握这些知识点,将有助于开发出更加美观、个性化的...

    Android代码-theme简单使用示例.zip

    在Android开发中,主题(Theme)是一个至关重要的概念,它为整个应用程序或应用程序中的特定组件提供了统一的视觉样式。主题可以定义颜色、字体、图标以及其他界面元素的外观,从而实现一致性和品牌识别度。本示例将...

    android安卓app已经放弃使用Theme.Dialog,改用Theme.Holo.DialogWhenLarge

    在Android应用开发中,主题(Theme)是控制应用程序全局外观和行为的重要元素。"Theme.Dialog"和"Theme.Holo.DialogWhenLarge"都是Android系统提供的两种不同的对话框主题。本篇文章将详细探讨这两种主题的区别,...

    Android Style\\Theme动态切换

    在Android开发中,主题(Theme)和样式(Style)是构建用户界面的重要组成部分。它们允许开发者定义应用程序的整体外观和感觉,包括颜色、字体、布局等元素。动态切换Theme和Style可以提升用户体验,使得用户可以根据...

    Android改Theme实现夜间模式

    首先,理解Android中的Theme(主题)是至关重要的。Theme是Android应用的全局样式,它定义了应用的整体外观和感觉,包括颜色、字体、布局等元素。我们可以创建自定义Theme,并在运行时动态切换,从而实现夜间模式...

    Android应用源码之theme.zip

    在Android开发中,主题(Theme)是至关重要的一个部分,它定义了应用程序的视觉样式、颜色、字体等界面元素。本资源"Android应用源码之theme.zip"提供了一个关于Android主题设计的源码示例,旨在帮助开发者深入理解...

    android theme 皮肤主题 的应用 2

    这篇博文“android theme 皮肤主题的应用 2”可能是关于如何在Android应用中实现和应用自定义主题的深入探讨。尽管没有具体的描述,但我们可以从标签“源码”和“工具”推测,内容可能涵盖了如何通过源代码修改和...

    Android设置theme中可能遇到的坑

    最近在配置项目主题的时候报了如下错误: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR 原因一 错误写法: &lt;style name=App...

    android_UI进阶之style和theme的使用

    Android 中的样式(style)和主题(theme)是两种资源,都是 Android 提供的默认资源,可以供开发者使用。同时,开发者也可以自己定义style和theme,以满足不同的需求。 style style是针对view的,例如TextView、...

    Android studio主题包

    在Android开发领域,Android Studio是谷歌官方推荐的集成开发环境(IDE),它为开发者提供了...通过了解和应用各种主题,开发者可以打造一个既美观又实用的个性化开发环境,从而更好地投入到Android应用的开发工作中。

    Android UI中的style和theme以及AlertDialog

    在Android UI设计中,style和theme是两个至关重要的概念,它们极大地增强了应用界面的统一性和可维护性。这篇博文将深入探讨这两个主题,并通过具体的示例来解释它们的工作原理。 首先,我们来看`style`(样式)。...

    Android Theme更换主题换肤应用实例

    Android Theme界面换肤应用实例,也就是更改系统主题风格,可在“应用透明背景的主题”、“应用布景主题1”、“应用布景主题2”三种皮肤风格之间切换,Android换肤对Android手机来说是再简单不过的功能了,个性化...

    android自定义主题

    在Android开发中,自定义主题是一项重要的技能,它允许开发者为应用程序创建独特的视觉风格,提升用户体验。自定义主题不仅能够统一应用的外观和感觉,还能方便地进行UI更新,而无需更改每个单独组件的样式。下面...

    Android源码——theme简单使用示例.zip

    在Android开发中,主题(Theme)是一个至关重要的概念,它为应用程序提供了统一的视觉样式和交互体验。主题允许开发者全局设定应用的外观,包括颜色、字体、图标等元素,而无需在每个单独的Activity或View中重复设置...

    安卓Android源码——theme简单使用示例.zip

    在安卓(Android)开发中,主题(Theme)是一种全局的样式定义,它可以影响应用程序或整个系统的界面外观。主题主要用于统一应用的视觉风格,提供不同设备和用户偏好的适配,以及简化代码,使得开发者不用在每个...

Global site tag (gtag.js) - Google Analytics