res\values\attrs.xml: Error: Found item Attr/text more than one time 编译报错解决方案

今天在做自定义控件的时候定义自定义属性遇到一个问题,自定义属性重复编译报错了,我是这么写的,

    <declare-styleable name="TextButtonView">
        <attr name="text" format="string"/>
        <attr name="textSize" format="dimension"/>
        <attr name="textColor" format="color"/>
        <attr name="background" format="reference"/>
    </declare-styleable>
    <declare-styleable name="CountdownView">
        <attr name="countdownstate" format="boolean" />
        <attr name="text" format="string"/>
        <attr name="countTextSize" format="dimension"/>
        <attr name="countTextColor" format="color"/>
        <attr name="countBackground" format="reference"/>
    </declare-styleable>

解决办法是将相同的属性定义到declare-styleable标签外面,这样就可以重复使用了,这样写可以解决问题

    <attr name="text" format="string"/>
    <declare-styleable name="TextButtonView">
        <attr name="text" />
        <attr name="textSize" format="dimension"/>
        <attr name="textColor" format="color"/>
        <attr name="background" format="reference"/>
    </declare-styleable>
    <declare-styleable name="CountdownView">
        <attr name="countdownstate" format="boolean" />
        <attr name="text" />
        <attr name="countTextSize" format="dimension"/>
        <attr name="countTextColor" format="color"/>
        <attr name="countBackground" format="reference"/>
    </declare-styleable>

网上也有很多这么写的,既然抽出公共的属性可行,那么为什么在一个项目中不定义一个标签,把我们的自定义属性写在一个标签里面呢

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomeAttrs">
        <attr name="text" format="string"/>
        <attr name="countdownstate" format="boolean" />
        <attr name="textSize" format="dimension"/>
        <attr name="textColor" format="color"/>
        <attr name="background" format="reference"/>
    </declare-styleable>

    <!--<declare-styleable name="TextButtonView">-->
        <!--<attr name="text" />-->
        <!--<attr name="textSize" format="dimension"/>-->
        <!--<attr name="textColor" format="color"/>-->
        <!--<attr name="background" format="reference"/>-->
    <!--</declare-styleable>-->
    <!--<declare-styleable name="CountdownView">-->
        <!--<attr name="countdownstate" format="boolean" />-->
        <!--<attr name="text" />-->
        <!--<attr name="countTextSize" format="dimension"/>-->
        <!--<attr name="countTextColor" format="color"/>-->
        <!--<attr name="countBackground" format="reference"/>-->
    <!--</declare-styleable>-->
</resources>

像这样验证过写是可行,写一次属性就可以了,不用重新定义多次,简单省事 !!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mrsongs的心情杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值