`

android自定义style主题样式

 
阅读更多

像HTML/CSS中的style一样,android也可以使用自定义的style样式

一般是在value 文件夹下面建一个styles.xml文件

样式是用于描述一个View或是一个窗口的显示属性的集合,样式可以指定如高度,填充,字体颜色,字体大小,背景颜色等属性。样式是从布局文件中分离出来 的一个XML资源文件。Android中的样式就像Web开发中的css样式表,它使用我们的样式独立于内容进行设计开发。
例如,通过使用一个样式可以让如下的布局文件

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#00FF00"
    android:typeface="monospace"
    android:text="@string/hello" />
 

简化为

<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />
 

所有和样式有关的属性都被从布局XML文件中移动到一个叫“CodeFont”的样式定义中,然后使用一个style属性指定样式名称。你将会在以下的内容中看到如何定义一个样式。

应用于一个Activity或应用程序的样式称为主题(theme),而不是刚才说的一个View。所有在当前Activity或应用下的视图 (VIEW)都会应用相同的主题样式。例如,您可以让一个Activity使用”CodeFont”主题,那么这个Activity下的所有视图的的文本 都将是绿色等宽字体。

 

定义样式

定义样式我们需要在 res/values/目录下新建一个XML文件,文件名自已随便命名,但必须以.xml为文件后缀。Xml的根节点必须为。
我们用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>
 

Style标签的name属性是必须有的,节点可以定义颜色、高度或者是另一个资源的引用。所有节点的子节点在 编译时都会做为应用程序的一个资源。所以我们可以通过style节点的name属性值来引用这个资源。比如在布局文件中使用 @style/CodeFont来引用这个样式。parent 属性是可选的,用它来标识本样式是继承哪个样式,在父样式中的所有属性都将被应用于本样式中,同时可以覆盖父样式中的样式(和java的继承相似)。

 

样式的继承
这里有两种方式可以实现样式继承,如上例中所示的,我们可以在定义样式时使用parent属性来继承样式,使用这种方式,我们可以继承一个我们自己定义好 的样式,也可以继承一个android平台自带的样式(后文中会介绍android平台自带的所有样式)。如下所示,我们继承一个android平台默认 的文本样式,并把它的字体颜色改为我们需要的颜色。

<style name="GreenText" parent="@android:style/TextAppearance">
        <item name="android:textColor">#00FF00</item>
    </style>

 另一种继承的方式是使用用户自定义的样式作为前缀即可。这种方式只适用于继承用户自定义样式。如下所示:

<style name="CodeFont.Red">
        <item name="android:textColor">#FF0000</item>
</style>

 这样,新定义的样式就会继承CodeFont样式的所有属性,然后把字体颜色变为#FF0000。我们可以这样引用新的样式: @style/CodeFont.Red
相同的方法,我们可以再继承下去,如下所示:

<style name="CodeFont.Red.Big">
        <item name="android:textSize">30sp</item>
</style>
 

这样新的样式文子的大小就和CodeFont.Red样式不同了。

样式属性

到这里为止,你已经知道了如何定义一个样式,你还需要知道有多少种样式属性可以通过节点来定义。你可能已经对其中的一些比较熟悉了,如layout_width 、textColor等。当然,还有很多的样式属性是你可以使用的。

最好的方法查询一个视图支持哪些样式属性的方法是查询视图类的文档中XML Attributes表格,如TextView的XML attributes如链接中所示: http://www.ideasandroid.com/android/sdk/docs/reference/android/widget/TextView.html#lattrs

如需所有可用的样式属性的,请参阅R.attr: http://www.ideasandroid.com/android/sdk/docs/reference/android/R.attr.html
不是所有的视图都支持上面的样式属性,如果遇到不支持的样式属性,您定义的属性将会被忽略。

应用样式和主题

应用样式和主题的方法很简单,在布局定义文件(layout)中,使用style属性直接引用样式资源,如下所示:

<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

 在AndroidManifest.xml文件中可以引用样式主题,可以为一个Activity定义一个主题,也可以为整个应用程序定义一个主题,如下所示:

<application android:theme="@style/CustomTheme">
或者
<activity android:theme="@style/CustomDialogTheme">
 

Android平台的样式和主题

样式见:http://www.ideasandroid.com/android/sdk/styles.xml
主题见:http://www.ideasandroid.com/android/sdk/themes.xml

 

转载请注明出处 http://www.ideasandroid.com/archives/322

3
2
分享到:
评论

相关推荐

    android 自定义各种风格button

    android 自定义各种风格button

    android设置主题和自定义主题的方法

    parent属性。这就不难理解style是可以继承的。在这里我们继承的是系统默认的EditText属性,只修改了背景和文字颜色而已。...找了一番终于也找到了,所有系统控件的样式是在一个style.xml文件中,这个文件也

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

    Android 使用Font和style定义App全局字体样式,非常快速,之前有一份同样的代码,但是忘记删除一些东西了,导致文件特别大,重新上传了一份

    Android程序技术:样式、主题、国际化.pptx

    主题(theme)应用到整个Activity和Application的样式,当设置好主题后,Activity或整个程序中的视图都将使用主题中的属性,当主题和样式中的属性发生冲突时,样式的优先级要高于主题。 自定义主题代码如下(styles....

    Android实现可使用自定义透明Dialog样式的Activity完整实例

    但同时对话框中的内容有更多控制和能控制其生命周期,这时你可以使用带有Dialog样式的Activity来应用你的项目中,想使Activity有对话框那样效果可以在Androidmanifest中添加 Android:style/Theme.Dialog 的主题特性 ...

    DatePickerDialog 自定义样式及使用全解

    1.增加Theme主题 ...android:theme=”@android:style/Theme.Light.NoTitleBar” 效果:   2.新建DatePickerDialog DatePickerDialog datePicker = new DatePickerDialog(MainActivity.this, AlertDialog.THE

    Android中自定义对话框(Dialog)的实例代码

    继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类 第一步: 我们知道Android定义个控件或View的样式都是通过定义其style来实现的,查看Android框架中的主题文件,...

    Android入门教程之创建样式与主题

    第二种方法就是创建自定义的样式和主题。如果你对web开发熟悉,第一种方法类似于使用内联的CSS样式,而第二种类似于使用style sheets。 这篇文章我们将介绍如何创建自定义的样式和主题。 二、创建Styles 样式显然是...

    修改Android App样式风格的方法

    android中可以自定义主题和风格。风格,也就是style,我们可以将一些统一的属性拿出来,比方说,长,宽,字体大小,字体颜色等等。可以在res/values目录下新建一个styles.xml的文件,在这个文件里面有resource根节点...

    疯狂Android讲义源码

     6.8 样式(Style)和主题(Theme)  资源 243  6.8.1 样式资源 243  6.8.2 主题资源 245  6.9 属性(Attribute)资源 247  6.10 使用原始资源 249  6.11 国际化和资源自适应 251  6.11.1 Java国际化的思路 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——...

    Google Android SDK开发范例大全的目录

    3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递...

    疯狂Android讲义.part2

    6.8 样式(Style)和主题(Theme) 资源 243 6.8.1 样式资源 243 6.8.2 主题资源 245 6.9 属性(Attribute)资源 247 6.10 使用原始资源 249 6.11 国际化和资源自适应 251 6.11.1 Java国际化的思路 252 6.11.2 Java...

    疯狂Android讲义.part1

    6.8 样式(Style)和主题(Theme) 资源 243 6.8.1 样式资源 243 6.8.2 主题资源 245 6.9 属性(Attribute)资源 247 6.10 使用原始资源 249 6.11 国际化和资源自适应 251 6.11.1 Java国际化的思路 252 6.11.2 Java...

Global site tag (gtag.js) - Google Analytics