您的位置:首页 > 移动开发 > Android开发

Android学习之使用样式节省时间

2016-07-18 17:08 561 查看
假如我们想要在界面上放置多个TextView,这些TextView除了文字内容,也就是android:text属性不同以外,其他的属性都一样。那么除了像往常那样一个个给这些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!" />


运行之后效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android Android学习 UI