`

Android style(样式)和theme(主题)设置

 
阅读更多

本文主要介绍android应用程序如何设置样式,包括样式定义、单个view设置样式 全局样式设置样式继承关系

 

1、样式定义

android的样式定义在res/values/style.xml文件中,类似web前端中将样式定义在某个css文件中,但android的style.xml是自动加载的,不需要手动import或link。目前还不了解android是否可以或怎么定义多个style文件。

如下是一组样式的定义

    <!-- 全局字体样式-->
    <style name="DefaultFontStyle"> 
        <item name="android:textSize">18px</item>
        <item name="android:textColor">#0000CC</item>
    </style>
    
    <!-- 全局背景色-->
    <style name="DefaultBgColor" parent="@style/DefaultFontStyle"> 
        <item name="android:background">#F2F2F2</item>
    </style>
    
    <!-- 全局样式-->
    <style name="DefaultStyle" parent="@style/DefaultBgColor"> 
    </style>

a. android的样式定义是通过style标签完成的,通过添加item元素设置不同的属性值

b. 样式可以通过设置parent进行继承。上面的DefaultBgColor继承自DefaultFontStyle,而DefaultStyle又继承自DefaultBgColor,这样DefaultStyle就有了字体大小颜色、背景色的属性了。

c. android的主题样式和一般样式的定义是一样的,只是引用时不同,下面将会介绍

 

2、单个view如何设置样式

比如TextView,设置样式如下

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:text="我在做什么:"
    android:textSize="18px"
    android:textColor="#0000CC"
    />

也可以引用第一部分定义的样式,如下

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:text="我在做什么:"
    style="@style/DefaultStyle"
    />

设置view的style属性进行样式调用,推荐使用此种方式将样式和布局分离。其他view及viewGroup设置相同。

 

对于单个view的更多属性可以参考http://developer.android.com/reference/android/R.styleable.html#View

或具体的某个view的sdk文档xml attribute.

 

3、全局样式设置

在web前端编程中,可以使用

body {
	background: #cce8cf;
	color: #000;
	font-family: 宋体 verdana, tahoma;
	font-size: 18px;
	padding: 1px 2px 0 2px;
	counter-reset: section;
}

设置全局的样式

div {
    margin-top: 10px;
	margin-bottom: 10px;
}

设置单个标签的样式

 

android中我们同样可以办到,只是这种全局样式被称作主题theme,比如对于整个应用默认字体都要18px,颜色为#0000CC,背景色为#F2F2F2,我们可以通过在AndroidManifest.xml设置application的android:theme属性完成,如下:

<application android:theme="@style/DefaultStyle">

DefaultStyle即为第一部分中定义的主题,在第一部分中我们提到的主题和样式定义一样也是这个意思,只是引用的时候使用android:theme罢了。

 

下面为单个activity设置主题的代码

<activity android:name=".AccountManageActivity"
      android:theme="@style/DefaultStyle">

activity的主题还有一些特殊设置,如

 

android:theme="@android:style/Theme.Dialog"

为对话框样式设置 

主题的设置也可以在代码中通过setTheme(R.id.xx)完成。

 

接下来问题就出现了,如果一个应用设置了application的主题,设置了activity,设置了view的样式,那么view的各个样式属性值究竟是多少呢??

 

3、样式继承关系

android的样式采取和css中一样的覆盖、继承原则,和面向对象的子类覆盖父类属性、继承没有定义的父类属性值的原则是一样的。

 

如果一个TextView自己设置了样式,它的ViewGroup设置了样式,activity设置了主题,application设置了主题。

它会先读取自己样式的值,对于自己没有的样式向上查找第一个找到的值即为要采取的值。

 

依次读取的顺序为View自己的样式->上一层ViewGroup的属性值->上上层ViewGroup的属性值->…->activity主题->activity主题

 

例子如下

    <!-- 全局字体样式-->
    <style name="DefaultFontStyle"> 
        <item name="android:textSize">18px</item>
        <item name="android:textColor">#0000CC</item>
    </style>
    
    <!-- 全局背景色-->
    <style name="DefaultBgColor" parent="@style/DefaultFontStyle"> 
        <item name="android:background">#F2F2F2</item>
    </style>
    
    <!-- 全局样式-->
    <style name="DefaultStyle" parent="@style/DefaultBgColor"> 
    </style>

    <!-- textView字体样式-->
    <style name="TextViewFontStyle"> 
        <item name="android:textSize">20px</item>
    </style>

application主题为

<application android:theme="@style/DefaultStyle">

activity主题为

<activity android:name=".AccountManageActivity"
      android:theme="@style/DefaultStyle">

textView样式设置如下

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:text="我在做什么:"
    style="@style/TextViewFontStyle"
    />

 则textView中最终字体大小为20px,颜色采用activity中设置的0000CC

 

 

 
分享到:
评论

相关推荐

    Android Style\\Theme动态切换

    这篇博客“Android Style\\Theme动态切换”可能探讨了如何在Android应用程序中实现实时改变主题和样式的技巧。 首先,我们需要理解Android中的Theme和Style的基本概念。Theme是全局的,通常应用于整个应用程序或...

    android_UI进阶之style和theme的使用

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

    Android UI中的style和theme以及AlertDialog

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

    android style(样式)和theme(主题)设置.doc

    在Android开发中,样式(style)和主题(theme)是用来统一和管理应用程序视觉表现的关键工具。它们允许开发者定义UI组件的外观和行为,并且能够轻松地在整个应用中应用和更改这些设定。 首先,我们来详细了解样式...

    Android_样式(style)&主题(theme)&显示单位

    在Android开发中,样式(style)和主题(theme)是两个关键的概念,它们用来统一和管理应用程序的视觉表现。样式可以看作是一组预定义的属性集合,用于控制UI组件的外观,比如字体颜色、大小、背景等。而主题则是...

    Androidstudio theme 主题

    4. **应用主题**:在AndroidManifest.xml或各个Activity的AndroidManifest.xml分片中,设置相应的android:theme属性,引用你刚导入的主题。 5. **测试与调整**:运行应用,查看新主题的效果。如果需要进一步个性化...

    android style and theme

    在Android开发中,为了提高UI设计的效率并保持界面的一致性,开发者通常会利用**Style**和**Theme**两个概念来实现统一的设计规范。本文将详细介绍这两个概念,并通过实例展示它们在实际项目中的运用。 #### 二、...

    Android 使用Font和style定义App全局字体样式

    本文将详细讲解如何在Android中使用`Font`和`style`来定义App全局字体样式。 首先,让我们了解`Font`的概念。在Android中,`Font`通常指的是字体文件,通常以`.ttf`(TrueType Font)或`.otf`(OpenType Font)格式...

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

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

    Android应用源码之theme.zip

    可能会有一个&lt;style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"&gt;,这表示"AppTheme"主题继承自"Theme.AppCompat.Light.DarkActionBar",这是一个常见的Android支持库提供的主题,包含轻量级背景...

    android 主题(Theme)实现

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

    android主题设置与主题切换

    在Android开发中,主题(Theme)是应用全局样式和外观的重要组成部分。它允许开发者通过一套统一的设计语言来定义应用程序的视觉样式,包括颜色、字体、布局等元素。本篇文章将深入探讨Android中的主题设置和主题...

    android theme 皮肤主题 的应用

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

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

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

    学习笔记:自定义样式(style)与主题(theme)

    在Android开发中,自定义样式(style)和主题(theme)是两个关键的概念,它们极大地提升了应用的界面设计灵活性和用户体验。自定义样式允许开发者为UI组件设定特定的外观和行为,而主题则可以全局统一应用的视觉风格。...

    android主题设置demo

    在Android开发中,主题(Theme)是应用全局样式和外观的重要组成部分。它允许开发者通过一套统一的设计来控制应用中所有视图或者特定视图的视觉表现。本篇将深入探讨"android主题设置demo",主要关注如何定义和使用...

    Android Style实例总结

    在实际开发中,你还可以结合主题(Theme)和样式(Style)来统一应用到整个应用程序,使得设计更加一致且易于维护。通过不断地实践和调整,你可以创造出满足项目需求的各种独特按钮样式。在`11StyleSample`这个...

    Android主题样式配置

    本示例将详细介绍如何从外部配置Android项目的主题和样式,以便修改系统默认的控件样式和风格。 一、Android主题(Themes) 1. **主题的定义**:主题是全局的UI设定,它能影响到整个应用程序或某个Activity的所有...

    Android Theme和Styles内部定义解析.txt

    在Android开发中,为了实现界面的一致性和美观性,开发者通常会使用`Theme`和`Styles`来管理UI元素的样式和外观。本文将深入探讨Android中`Theme`和`Styles`的内部定义及其工作原理。 #### 二、Theme与Styles的基础...

    android change style

    在Android开发中,风格(Style)和主题(Theme)是两个重要的概念,它们允许开发者统一并自定义应用程序的外观和感觉。本篇文章将深入探讨如何在Android应用中动态地改变Style,以及Theme与Style的区别。 首先,让...

Global site tag (gtag.js) - Google Analytics