Themes are used to group a set of styles to be applied on the whole web application. Themes (or sometimes skins) define the look of all control within the application.

Android introduces similar concepts by usingStylesandThemes.A Style can be applied to views individually while a Theme is applied to a whole activity.

Styles:

Styles are defined as xml resources files inres/valuesdirectory of your project.

consider this definition of aTextView:

<TextView    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:textColor="#FFF"     android:typeface="monospace"     android:text="First Text View"     android:background="#00F"     />

this defines a text view with width and height equal to wrap_content, white font color, font type “monospace” and blue back ground.

if we want to have the same results using a style: we first create a xml file (call it styles.xml) inres/valuesdirectory and it would be like this:

<?xml version="1.0" encoding="utf-8"?><resources><style name="BlueLabel"><item name="android:layout_width">fill_parent</item><item name="android:layout_height">wrap_content</item><item name="android:typeface">monospace</item><item name="android:background">#00F</item><item name="android:textColor">#FFF</item></style></resources>

then redefine the TextView like this:

<TextView android:text="First Text View"     style="@style/BlueLabel"     />

and you will receive the same results.
the attributes in the<item>tag can be any layout property.

Inheriting Styles:

Styles in Android has an interesting feature which is the ability to inherit styles in a fashion similar to that in CSS. consider this example:

we have a style for a button like this:

<style name="ButtonStyle"><item name="android:layout_width">wrap_content</item><item name="android:layout_height">wrap_content</item><item name="android:textSize">15px</item><item name="android:typeface">serif</item></style>

the button will appear like this:

we can make this style inherit fromBlueLabeldefined previously by adding theparentattribute to the<style*gt;tag:

<style name="ButtonStyle" parent="BlueLabel">

then the button will be like this:


the button inherited the background color from the parent style.

another interesting feature in styles inheritance is the ability to inherit from the platform built-in styles defined in theandroid.R.stylenamespace. to know more about the platform styles check thislink

or you can type in your editor (Eclipse) android.R.style and let the intelli-sense list you the complete list of platform styles, if you want to use them in your xml just replace the undrscores with a period like this:
Widget_Buttonbecomes@android:style/Widget.Button.

In the previous button style example we will set the parent of the style to be@android:style/Widget.Button.Small
and the button will be like this:


Note:if you apply a style to aViewGroupwidget, it’s child widgetswill not inheritthat style.

Using Themes:

you can apply styles as themes on an activity level or application level.

if you apply a theme on an activity level then all widgets within that activity will inherit from that theme.
to do so,open theAndroidManifest.xmland go the<activity>tag and add theandroid:themeattribute:

<activity android:name=".StylesDemo"                  android:label="@string/app_name" android:theme="@style/BlueLabel">

to apply a theme on the application level so that the style will be applied to all activities within your application, open theAndroidManifest.xmland go the<application>tag and add theandroid:themeattribute:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/BlueLabel">

to set the theme of an activity programmatically call this line in theonCreatemethod

this.setTheme(R.style.BlueLabel);

and that’s was all about using themes and styles in Android, stay tuned for another topic next week.

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android(安卓)设置DrawableRight和Drawab
  2. Android(安卓)获取手机流量
  3. Linearlayout的android:divider属性
  4. Android利用Fiddler进行网络数据抓包
  5. 查看Android进程内存资源信息
  6. android:shape的使用
  7. 《Android高级开发》课程总结及知识点复
  8. Android(安卓)Context的意义
  9. 3.6.3新版本AndroidStudio报Could not re
  10. Eclipse环境下格式化Android的代码风格