Android学习之使用样式节省时间
2016-07-18 17:08
561 查看
假如我们想要在界面上放置多个TextView,这些TextView除了文字内容,也就是android:text属性不同以外,其他的属性都一样。那么除了像往常那样一个个给这些TextView进行设置之外有没有更好的方法呢?
利用样式(Style),我们可以把相同的属性都抽离出来放在Style.xml中作为公共资源。下面是具体的步骤:
可以看到,使用了样式之后的效果跟我们逐条编写属性是一样的。
新添加一个TextView:
在这里我继承的是TextAppearance样式,由于这个样式没有宽高,所以我加上了宽高属性,同时将字体颜色改成蓝色。
如果你要继承的是你自定义的样式,那么就不必使用parent属性,但是要把你要继承的样式名称作为前缀,中间用点隔开,再写上你的新样式名称。比如我想继承原来的TextViewStyle样式,并把字体修改成橙色,那么新样式的名称就可以写成TextViewStyle.OrangeText。
创建好样式之后,就是时候到布局中去运用了,再添加两个TextView:
利用样式(Style),我们可以把相同的属性都抽离出来放在Style.xml中作为公共资源。下面是具体的步骤:
在style.xml中编写样式
在style.xml中创建一个名称为TextViewStyle的样式,为它增加宽高、文字大小和背景颜色等属性:<style name="TextViewStyle"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">50dp</item> <item name="android:gravity">center</item> <item name="android:textSize">25sp</item> <item name="android:textColor">@android:color/white</item> <item name="android:background">@android:color/holo_blue_bright</item> </style>
在xml文件中使用样式
在xml文件中放置三个TextView,第一个我们采取常规的方法进行设置,后面两个则采用了样式,这样方便我们进行比较。样式的使用很简单,只需在控件中加入“style=”@style/样式名称””即可。<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.lin.mr.diyview.StyleActivity"> <TextView android:layout_width="match_parent" android:layout_height="50dp" android:background="@android:color/holo_blue_bright" android:gravity="center" android:text="Hello World!" android:textColor="@android:color/white" android:textSize="25sp" /> <!--下面的TextView使用了样式--> <TextView style="@style/TextViewStyle" android:text="I Love You!" android:layout_marginTop="10dp"/> <TextView style="@style/TextViewStyle" android:text="Thank You!" android:layout_marginTop="10dp"/> </LinearLayout>
运行之后的效果
可以看到,使用了样式之后的效果跟我们逐条编写属性是一样的。
修改样式的某一个属性
样式帮我们把共同的属性都设置好了,但是如果有的控件独立特行,比如有一个TextView喜欢别的颜色怎么办呢?其实我们只要对背景颜色单独设置就可以了。新添加一个TextView:
<TextView style="@style/TextViewStyle" android:text="Think In Different!" android:background="@android:color/holo_orange_light" android:layout_marginTop="10dp"/>
重新运行
样式的继承性
如果我们新建的样式想使用系统中存在的或者之前建好的样式怎么办呢?样式的继承性可以很好地解决这个问题。如果你要继承系统自带的样式,那么只要在你新建的样式名称后面加上parent属性即可:<style name="BlueText" parent="@android:style/TextAppearance"> <item name="android:textColor">@android:color/holo_blue_light</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">50dp</item> </style>
在这里我继承的是TextAppearance样式,由于这个样式没有宽高,所以我加上了宽高属性,同时将字体颜色改成蓝色。
如果你要继承的是你自定义的样式,那么就不必使用parent属性,但是要把你要继承的样式名称作为前缀,中间用点隔开,再写上你的新样式名称。比如我想继承原来的TextViewStyle样式,并把字体修改成橙色,那么新样式的名称就可以写成TextViewStyle.OrangeText。
<style name="TextViewStyle.OrangeText"> <item name="android:textColor">@android:color/holo_orange_light</item> </style>
创建好样式之后,就是时候到布局中去运用了,再添加两个TextView:
<TextView style="@style/TextViewStyle.OrangeText" android:layout_marginTop="10dp" android:text="Just Do It!" /> <TextView style="@style/BlueText" android:layout_marginTop="10dp" android:text="Never Give Up!" />
运行之后效果
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories