android declare-styleable 和style,android – declare-styleable和style之间的区别

我认为将属性声明为不是风格,只有以下区别。

在attrs.xml中,您可以直接在“资源”部分内或在“declare-styleable”中声明自定义属性:

所以现在我们将“attrib1”定义为不风格,“attrib2”为风格。

在layout / someactivity.xml中,我们可以直接使用这些属性(不需要命名空间):

您可以在style.xml声明中使用“styleable”属性“attrib2”。再次,这里不需要命名空间(即使在布局XML中使用了命名空间)。

text value

@color/white

然后您还可以设置每个样式的属性。

让我们假设我们这样做:我们将attrib1直接设置在XML中,我们将attrib2设置为一个样式。

在其他地方,我已经看到说明“blahblah”必须是使用这些属性的自定义视图类的名称,并且您需要使用命名空间来引用布局XML中的自定义属性。但似乎没有必要。

风格与非风格之间的区别似乎是:

>您可以在“style.xml”声明中使用样式属性。

>自定义类的构造函数需要以不同的方式读取样式和非样式的属性:使用getsStyledAttributes()的样式属性,以及具有attr.getAttributeValue()或类似属性的非风格属性。

在我在Web上看到的大多数教程和示例中,只使用了getsStyledAttributes()。但是,这不适用于直接在布局中声明的属性,而不使用样式。如果您在大多数教程中都显示了获取StyledAttributes()的方法,那么根本不会得到属性attrib1;你只会得到attrib2,因为它被宣布为风格。使用attr.getAttributeValue()的直接方法有效:

public CustomView(Context context, AttributeSet attrs) {

super(context, attrs);

String attrib1 = attrs.getAttributeValue(null, "attrib1");

// do something with this value

}

由于我们没有使用命名空间来声明“attrib1”,所以我们作为getAttributeValue()中的namespace参数传递null。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值