求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
追随技术信仰

随时听讲座
每天看新闻
 
 

Android开发教程
Android 开发环境配置
Android 架构
Android 应用组件
Android Hello World示例
Android 资源组织和访问
Android Activity
Android Service
Android 广播接收器
Android 内容提供者
Android 碎片/片段
Android Intent过滤器
Android UI布局
Android UI控件
Android 事件处理
Android 样式和主题
Android 自定义组件
Android 拖放
Android 通知
Android 基于位置服务
Android 发送电子邮件
Android 发送短信/SMS
Android 拨打电话
发布Android应用
ndroid Alertdialog
Android Animation实例
Android音频捕获
Android音频管理器实例
Android
Android最佳实践
Android Bluetooth实例
Android Camera
Android Clipboard
Android自定义字体
Android数据备份
Android Gestures/手势
Android图片效果
Android图片切换
Android内部存储
Android JetPlayer实例
Android JSON解析器
Android加载Spinner
Android本地化
Android登录实例
Android MediaPlayer
 
 

Android样式和主题
30 次浏览
6次  
 捐助

如果已经熟悉在网页设计中的层叠样式表(CSS),了解Android样式也是非常相似。每个 Android 窗口小部件,可以设置更改应用程序外观风格相关的属性。样式可以指定属性,如高度,填充,字体颜色,字体大小,背景颜色以及其它。

可以指定这些属性在布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >
   <TextView
     android:id="@+id/text_id"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:capitalize="characters"
     android:textColor="#00FF00"
     android:typeface="monospace"
     android:text="@string/hello_world" />
</LinearLayout>

不过这样一来,我们需要定义的样式属性,每个属性分别用于源代码维护的角度来看这是非常不好的。因此,样式定义应该放在单独的文件,如下解释。

定义样式

样式可以定义在一个单独的XML指定布局的XML资源文件。此XML文件位于 res/values/ 项目目录,强制性的样式文件中作为根节点,XML文件名称是任意,但它必须使用.xml扩展名。

可以定义每个文件中使用的多种样式[style]标签,但要使用唯一的名称来标识此样式。 Android 样式属性设置使用的标签,如下图所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <style name="CustomFontStyle">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:capitalize">characters</item>
        <item name="android:typeface">monospace</item>
        <item name="android:textSize">12pt</item>
        <item name="android:textColor">#00FF00</item>/>
      </style>
</resources>

这里<item>里边的值可以是一个关键字串,十六进制的颜色,参考到另一个资源类型,或其他的值取决于样式属性

使用样式

样式定义之后,就可以用它在XML布局文件使用样式属性,如下所示:

?<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >
     <TextView
     android:id="@+id/text_id"
     style="@style/CustomFontStyle"
     android:text="@string/hello_world" />
  </LinearLayout>

要理解这个概念涉及到Android 的样式,可以检查 样式实例。

使用样式

Android支持级联样式表在网页设计风格非常类似继承这种方式。可以使用这个继承现有的样式属性,然后定义想要更改或添加属性。

其操作简单,创建一个新的的样式继承LargeFont上述CustomFontStyle风格定义,但字体的大小变大,可以编写这样的新的样式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <style name="CustomFontStyle.LargeFont">
        <item name="android:textSize">20ps</item>
     </style>
</resources>

@style/CustomFontStyle.LargeFont 的XML布局文件,可以参考这个新的样式。可以继续秉承这样多次,只要愿意,周期通过链接名称。例如,可以扩展FontStyle.LargeFont的是红色的,如下:

<?xml version="1.0" encoding="utf-8"?>
  <resources>
     <style name="CustomFontStyle.LargeFont.Red">
        <item name="android:textColor">#FF0000</item>/>
      </style>
  </resources>

继承这种技术通过链接在一起的名字仅适用于自己的资源定义的样式。不能继承:Android内置样式的这种方式。要引用一个Android内置风格,如TextAppearance,必须使用父属性,如下所示:

<?xml version="1.0" encoding="utf-8"?>
  <resources>
     <style name="CustomFontStyle" parent="@android:style/TextAppearance">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:capitalize">characters</item>
        <item name="android:typeface">monospace</item>
        <item name="android:textSize">12pt</item>
        <item name="android:textColor">#00FF00</item>/>
      </style>
  </resources>

Android 主题

希望能够理解样式的概念,现在让我们去了解什么是主题。主题是什么,主题只不过是要Android应用到整个活动或应用程序中统一样式,而不是一个单独的视图样式。

因此,当一个样式应用为主题,将适用于每一个活动或应用程序视图它支持每个样式属性。例如,可以应用一个主题Activity 活动的的同一CustomFontStyle风格,然后内部的所有文本,活动都会有绿色环保等宽字体。

要设置应用程序的所有活动的主题,打开AndroidManifest.xml文件,编辑标签包含了android:theme 属性的风格名称。例如:

<application android:theme="@style/CustomFontStyle">

但是,如果想有一个主题,只是在应用程序的一个Activity 活动,然后添加android:theme属性到[activity]标签。例如:

<activity android:theme="@style/CustomFontStyle">

有一些由Android定义的默认主题,可以直接使用或继承父属性如下:

<style name="CustomTheme" parent="android:Theme.Light">
  ...
</style>

要理解这个概念,有关Android的主题,可以查看 主题示例。

默认样式和主题

Android平台提供了一个大集合,可以在应用程序中使用的风格和主题。可以在R.style类的参考找到所有可用的样式。要使用这里列出的风格,在一个样式名替换所有下划线。例如,可以应用Theme_NoTitleBar主题使用如“@android:style/Theme.NoTitleBar”。可以看到下面的源代码为Android的风格和主题:

  • Android Styles (styles.xml)
  • Android Themes (themes.xml)


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



30 次浏览
6次
 捐助
 

每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号