安卓(android)的样式(style)和主题(theme)

样式是一套指定View或Window的外观和格式的属性集合。样式指定的是属性的集合,如高度、字体、字体颜色、背景等。Android里的样式推荐定义在xml文件里。

 
主题也是一种样式,只不过它是应用在整个Activity或application,而不只是View或Window。

 
定义自己的样式
样式保存为一个xml文件,保存在项目的res/values目录下,文件名是任意的,但必须以.xml为扩展名。
样式定义的例子如下,样式名为CodeFont,拥有自定义的属性(如layout_width、layout_height、layout_height、typeface):
<?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:layout_height">#00FF00</item>
         <item name="android:typeface">monospace</item>
       </style>
</resources>
 
当需要应用这个样式的时候,只需应用style的name属性,如:@style/CodeFont。

 
样式的继承
方式一:style里的parent属性指定了继承的样式的属性,可以改写继承的样式属性。如上CodeFont继承了android:style/TextAppearance.Medium的样式属性。
方式二:如果不想使用parent属性而又想继承其他的样式属性,可以把style的name写为CodeFont.Red。如下:
<style name="CodeFont.Red">
            <item name="android:textColor">#FF0000</item>
       </style>
该样式(CodeFont.Red)继承了CodeFont,且颜色为红色(#FF0000),通过@style/CodeFont.Red引用该样式。
CodeFont.Red还可以继续被继承,如下:
<style name="CodeFont.Red.Big">
            <item name="android:textSize">30sp</item>
       </style>
CodeFont.Red.Big继承了CodeFont.Red和CodeFont的样式属性,依此类推,可以不断的继承下去,就像Java的继承一样。
 
注意:对于android内置的样式属性只能通过parent继承(即方式一),不能通过name属性(即方式二)。

 
样式属性
对于自己要定义的样式,item里的样式可以到要应用到的View的类里面查看可以应用哪些属性。如定义一个样式给TextView,可以到TextView类里面查看TextView支持哪些属性。对于不支持的属性不会起作用,也不会报错。
有一些样式属性只有在它被用作主题(Theme)是才起作用,这些样式属性应用到整个窗口而不应用到任何的一个View,比如,有的样式属性可以隐藏application标题,隐藏status bar,或改变窗口的背景。这些属性不属于任何的View。可以到android.R.attr里去查看以window开头的属性,如windowNoTitle 和windowBackground,这些属性只有当样式作为主题时才有效果。

 
应用Styles和Themes到UI
1、对于单独的View,在style属性里引用样式,只应用到该View。
2、对于整个Activity或整个application,通过android:theme属性引用样式,对于该Activity或application下的所有元素,如果该元素支持该属性,就会有效果,否者会忽略该属性。
 
应用样式到View
<TextView style="@style/CodeFont" android:text="@string/hello" />
把样式作为主题应用到Activity或application
<application android:theme="@style/CustomTheme">
<activity android:theme="@android:style/Theme.Dialog">
 
android提供的样式可以在R.styleable.Theme里找到一些。
R.style提供了所有的可用样式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值