杂乱之android的style、Theme的应用

首先,我们来确定下style和Theme都是做什么用的?

       我们都知道,我们可以通过在main.xml或者其他的布局文件中通过属性设置来设置控件的样式,这就导致了我们基本上要为每一个控件都一一的设置属性,更让人恼火的是,这些属性里面的很多都是相同的,欲哭无泪啊!

        在这个程序员天天期待救世主出现的年代,天空一声惊雷,style和Theme凭空降临了,帮我们解决了这个天大的难题。style允许我们可以将一些公共的属性设置放到一起,然后定义一个style名称,我们在控件中想使用这些设置的时候,只需要调用下这个style就可以了。至于Theme,你可以认为它是一种特殊的style。

1)、style一般用来控制控件的属性控制

2)、Theme一般是用来控制窗口的属性设置

--------------------------------------------------------------------

下面我们就一起来介绍下,具体的应用办法:

问题一:我们的style设置都放在那里呢?

我们的style(包括Theme)都存放在res/values/*.xml中,这里的xml文件名称我们可以随意,但是为了规范,我们一般都使用style.xml或者styles.xml

 

style代码示例:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
 <style name="TextView">
  <item name="android:textSize">18sp</item>
  <item name="android:textColor">#008</item>
  <item name="android:shadowColor">@android:color/black</item>
  <item name="android:shadowRadius">2.0</item>
 </style>

 <style name="EditText">
  <item name="android:shadowColor">@android:color/black</item>
  <item name="android:shadowRadius">1.0</item>
  <item name="android:background">@android:drawable/btn_default</item>
  <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
 </style>

    <style name="Button">
        <item name="android:background">@android:drawable/edit_text</item>
        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
    </style>
</resources>

xml中我们定义了三个style,当我们在程序中调用的时候,便可以通过style的name属性值来调用。(注意:我们说过了style.xml的名称可以随意定义,但是里面标签的结构却不是随意的,想定义style,则必须在resources标签下定义style标签,内容的子属性通过item来进行设置)

 

我们再来看看一个Theme的示例:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme.Light">
  <item name="android:windowFullscreen">true</item>
  <item name="android:windowTitleSize">160dip</item>
  <item name="android:windowTitleStyle">@style/WindowTitle</item>
 </style>

 <style name="WindowTitle" parent="android:WindowTitle">
  <item name="android:singleLine">true</item>
  <item name="android:shadowColor">#BB000000</item>
  <item name="android:shadowRadius">5.75</item>
 </style>
</resources>

 

       大家发现了没有,一模一样的结构!这也是我刚才为什么说,其实Theme就是一种特殊style的原因。

 

-----------------------------------------------------------------

我们再来看看如何调用我们定义好的style。这里假设,我们有一个和EditText相关的style,该style的name属性为style_editText,有一个和窗口设置相关的Theme,该Theme的名称为theme_ok。那么我们如何使用它们呢?

 

第一种:为某个特定的EditText使用style_editText。

<EditText

 android:id="@+id/myEditText"

android:layout_width="fill_parent"

android:layout_height="wrap+parent"

style="@style/style_editText"

android:hit="欢迎来到chenzheng_java博客"

/>

 

第二种:在程序中使用主题theme_ok

 

我们可以看到,我们通过setTheme方法来实现的。

 

第三种:为整个应用或者某个activity添加主题

为整个应用添加主题,我们可以在AndroidManifest.xml中通过为<application>标签添加实行android:theme属性来实现。例如android:theme="@style/Theme_ok"

 

为activity添加主题,我们可以在AndroidManifest.xml中通过为<activity>标签添加实行android:theme属性来实现。例如android:theme="@style/Theme_ok"

 

---------------------------------------------------------------------------

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值