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

假如我们想要在界面上放置多个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!" />

运行之后效果

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值