我知道可以创建自定义UI元素(通过View或特定UI元素扩展)。但是否可以为新创建的UI元素定义新的属性或特性(我的意思是不是继承,而是全新的,以定义一些我无法使用默认属性或特性处理的特定行为)
例如,元素my自定义元素:
<com.tryout.myCustomElement
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Element..."
android:myCustomValue=<someValue>
/>
那么,是否可以定义MyCustomValue?
谢谢
3条答案
按热度按时间wqsoz72f1#
是的。简短指南:
1.创建属性XML
在
/res/values/attrs.xml
中创建一个新的XML文件,该文件具有属性及其类型基本上你必须为你的视图设置一个
<declare-styleable />
,它包含了你所有的自定义属性(这里只有一个)。我从来没有找到一个完整的可能类型列表,所以我想你需要查看一个类型的源代码。我知道的类型有 reference(到另一个资源),color,boolean,dimension,float,integer和string。它们是非常不言自明的1.在布局中使用属性
其工作方式与上面所做的相同,但有一个例外:自定义属性需要自己的XML名称空间。
相当直接。
1.使用传递给您的值
修改自定义视图的构造函数以分析值。
distanceExample
在这个例子中是一个私有成员变量。TypedArray
有很多其他的东西来解析其他类型的值。就是这样,在
View
中使用解析后的值来修改它,例如在onDraw()
中使用它来相应地更改外观。sz81bmfz2#
在res/values文件夹中创建attr.xml。您可以在其中定义属性:
当您想在布局文件中使用它时,必须添加
然后可以将该值用于
customname:myCustomValue=""
6za6bjd03#
是的,你可以。只要使用
<resource>
标签。像这样:
link from official website