Android布局优化之使用style提取重复使用属性

本文探讨了如何通过定义style来优化Android布局代码,以提高代码的可读性和复用性。举例说明了如何创建style如style_margin_lr_10来处理常见的marginLeft和marginRight属性,并介绍了两种扩展style的方法:直接指定parent或使用名称前缀连接法。建议在项目中大量重复属性时使用style优化布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何优化布局代码?使之看起来既简洁又得到优化呢?

在项目中写布局的时候常常会遇到很多空间使用到了很多相同的属性,例如一个TextView使用到了marginLeft和marginRight,其他很多类型的空间也是用到了这两条属性,那么我们就应该提取该属性以style的形式应用到各个控件来优化我们的代码。那开始来使用style优化我们的布局吧

场景1:

在我们的项目中很多空间使用到了marginLeft和marginRight这两个属性,那我们定义了style:style_margin_lr_10

<style name="style_margin_lr_10">
        <item name="android:layout_marginLeft">10dp</item>
        <item name="android:layout_marginRight">10dp</item>
    </style>
通过该style优化了布局代码,但是,此时发现各个控件属性有不同的需求,比如TextView需要额外的属性textColor,而EditText需要额外的属性inputType,那么我们可以通过扩展style的方式来实现;

场景2:扩展style

扩展style有两种方式:

方式1:继承android平台的属性,通过style标签的parent指定继承自谁

<!--继承android平台属性-->
    <style name="red" parent="@android:style/TextAppearance">
        <item name="android:textColor">@android:color/holo_red_light</item>
    </style>
如上代码,继承了android自带的TextAppearance属性并扩展了textColor属性;

方式2:继承自我们自定义的属性,看官方文档中的一句话(如果您想从自行定义的样式继承属性,则不必使用 parent 属性,     而是只需将您想继承的样式的名称以前缀形式添加到新样式的名称之中,并以句点进行分隔)。

<style name="style_margin_lr_10">
        <item name="android:layout_marginLeft">10dp</item>
        <item name="android:layout_marginRight">10dp</item>
    </style>
当我要扩展margin_lr_10的属性式,只需如下:

<!--如果您想从自行定义的样式继承属性,则不必使用 parent 属性,
    而是只需将您想继承的样式的名称以前缀形式添加到新样式的名称之中,并以句点进行分隔-->
    <style name="style_margin_lr_10.RED">
        <item name="android:textColor">@android:color/holo_red_light</item>
    </style>
    <style name="style_margin_lr_10.RED.Padding10">
        <item name="android:padding">10dp</item>
    </style>
通过.链接即可继承属性;

当然也可以通过parent指定要继承的style

<style name="style_margin_lrt_10" parent="style_margin_lr_10">
        <item name="android:layout_marginTop">10dp</item>
    </style>
使用效果如图:


!注意这种通过.链接继承属性的做法只适用于我们自定的属性,而不能用于继承android平台的。

所以项目中很多重复属性的时候记得使用style优化代码哦!





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值