今天来和大家分享一下android中UI设计里面常会用到的style和theme。

首先,style和theme都是资源,android提供了很多这样的默认资源。你可以来使用它们。同时你也可以自己定义style和theme。这非常的简单,只需要在res/values/这个路径里面新建一个.xml文件,而且他的根节点必须是<resources>.对每一个style和theme,给<style>element增加一个全局唯一的名字,也可以选择增加一个父类属性,我们写的style和theme就会继承这个父类的属性。style和theme的定义格式相同。不过style是针对view来说的,比如TextView,EditText这些,而theme必须针对整个activity或者整个程序,你必须在AndroidManifest.xml中的<application>或者<activity>中定义。

先来看看style,比如如下一段代码:

                            <?          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:textColor" > #00FF00 </ item >
< item name ="android:typeface" > monospace </ item >
</ style >
</ resources >

可以看到这个style的名字为CodeFont。 parent后面就是父类的style, CodeFont继承这个父类的属性。可以看到这个父类的style是android中默认的,你也可以继承你自定义的style,这时候不需要再写parent属性,而是使用ContFont.red这样的方式,而且你可以继续继承,写成ContFont.red.small。 接下来每一个item定义一个属性。定义属性的最好方法就是在api文档里找到这个view的xml属性,比如在EditText中有InputType这个属性,那么在你的style里面你就可以来定义它。

这样一个style就写好了。

使用也非常简单,我们只要在写我们的view时,加入style标签就可以了,就像这样

                      <        TextView
style ="@style/CodeFont"
android:text
="@string/hello" />

下面讲讲主题,前面已经说了。主题需要在AndroidManifest.xml中注册。如果你想整个程序都使用这个主题,你可以这样写

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

如果你只需要在某个Activity中使用主题,那么只要在Activity标签中写入android:theme=就可以了,android有很多好的默认主题,比如

                      <        activity         android:theme        ="@android:style/Theme.Dialog"        >      

这就会使你的整个Activity变成一个对话框形式,或者,如果你希望背景是透明的,可以这样写

                      <        activity         android:theme        ="@android:style/Theme.Translucent"        >      

同样的我们也可以继承父类theme,写法和style一样,就不赘述了。当然,和style一样,你也可以自己定义一个theme,写个例子

代码
                            <?          xml version="1.0" encoding="utf-8"          ?>          
< resources >
< style name ="CustomTheme" >
< item name ="android:windowNoTitle" > true </ item >
< item name ="windowFrame" > @drawable/screen_frame </ item >
< item name ="windowBackground" > @drawable/screen_background_white </ item >
< item name ="panelForegroundColor" > #FF000000 </ item >
< item name ="panelBackgroundColor" > #FFFFFFFF </ item >
< item name ="panelTextColor" > ?panelForegroundColor </ item >
< item name ="panelTextSize" > 14 </ item >
< item name ="menuItemTextColor" > ?panelTextColor </ item >
< item name ="menuItemTextSize" > ?panelTextSize </ item >
</ style >
</ resources >

如果你要在java代码中加载主题的话,只要用setTheme(R.style.CustomTheme)就可以了,不过记得一定要在初始化任何view之前,比如一定要放在我们常用的setContentView()之前。通常,我们不建议这么做。

在写程序布局的时候,熟练的使用style和theme是非常必要和有益的。今天就到这里啦。有什么问题可以留言交流。大家春节快乐!

更多相关文章

  1. Android群英传笔记——第七章:Android动画机制和使用技巧
  2. Android自定义控件——仿ios开关按钮
  3. android 自定义带关闭按钮的dialog
  4. Android常见问题总结(四)
  5. Android中Styles、Themes、attrs介绍
  6. DIY Android之一--原生Android系统主题支持的设计和实现
  7. Android界面编程——Android基本控件
  8. android中listview的一些样式设置,自定义ListView行间的分割线
  9. Android(安卓)属性动画ValueAnimator和ObjectAnimator的高级用法

随机推荐

  1. Android学习笔记进阶1之MediaPlayer
  2. 《Android开发从零开始》——10. LinearL
  3. Android属性 bulid.prop等
  4. 解决Android(安卓)自定义RatingBar 不能
  5. Android(安卓)如何实现手机震动
  6. Android中贪吃蛇游戏的学习(五)
  7. Android(安卓)毛玻璃效果的实现
  8. Android(安卓)启动分析 init进程 init.rc
  9. Android的界面设计工具——DroidDraw
  10. 详解 Android(安卓)的 Activity 组件 -