安卓样式与主题

当我们在做一个apk的时候,有时候我们会遇到一些风格一致的控件,这时候我们就需要利用style来统一规定风格,避免在每个地方重复定义.样式被定义在一个XML资源文件中,跟设置布局的XML资源文件是分开的。这跟web设计中的CSS(层叠样式表)相似,就是页面和样式分隔开来。style我们可以应用到控件上,也可以应用到activity上或者整个application上,这时这个样式就变成了主题.

一 样式定义

创建一个样式,在res/values目录中新建一个XML文件。这个XML文件可以随意命名,通常是styles.xml,这个XML文件的根节点必须是<resources>。然后新建<style>元素到在这个节点下,对于每个style你需要添加一个带有独一无二的name属性(这个属性是必须的)的。接着为每一个style下添加<item>元素,使用name属性(这个属性是必须的)声明样式特性,每个元素都需要添加android:命名空间作为前缀,标签中写下相应的值,这个值可以是字符串、十六进制的颜色值、对另一个资源类型的引用。如下:

    <style name="TitleStyle">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:layout_marginLeft">5dp</item>
        <item name="android:layout_marginTop">5dp</item>
        <item name="android:textSize">18sp</item>
    </style>

二样式使用

在需要使用样式地方设置style属性为刚刚定义的属性样式
 	<TextView
        style="@style/TitleStyle"
        android:text="归属地查询" />

三样式继承

有两种方式来实现继承,一是通过style的parent属性,二是使用点号来定义
3.1 在定义style标签的时候,可以添加一个parent属性,指定一个父样式.如下,这边的apptheme样式继承了appbasetheme样式
 <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
 		 <!-- 隐藏标题栏 -->
         <item name="android:windowNoTitle">true</item>
        
    </style>
    

3.2 利用点号来定义,同样使用前面的例子
   <!-- Application theme. -->
    <style name="AppTheme.AppBaseTheme">
 		 <!-- 隐藏标题栏 -->
         <item name="android:windowNoTitle">true</item>
        
    </style>
注意:在利用点号定义样式的时候,应用的样式的要写上该样式的全名,AppTheme.AppBaseTheme,不能使用简单名字 AppTheme.


四主题

如果要使整个apk或者activity风格统一,这时候就需要用到主题了.为了给你的应用中的所有Activity设置一个主题,你需要打开AndroidManifest.xml文件,然后编辑<application>标签,写上android:theme属性,用样式名作为它的值.如
  <application
        android:theme="@style/AppTheme" >
 <activity
        android:theme="@style/AppTheme" >
这是使用自定义的样式,安卓系统本身就给我们提供了很多样式.如Theme.Dialog、Theme.Translucent.这时候写法要注意使用@android:style,表示引用系统资源.
<activity android:theme="@android:style/Theme.Dialog"> 








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值