我认为将属性声明为不是风格,只有以下区别。
在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。
今天的文章android declare-styleable 和style,android – declare-styleable和style之间的区别分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31741.html