Android - 使用自定义属性创建自定义UI
Android - 使用自定义属性创建自定义UI
我知道可以通过视图或特定的UI元素扩展来创建自定义的UI元素。但是是否可以为新创建的UI元素定义新的属性或属性(我指的是非继承的,而是全新的,以定义某些特定的行为,我无法使用默认属性或属性处理)
例如,元素my custom element:
/>
因此,是否可以定义MyCustomValue?
谢谢
admin 更改状态以发布 2023年5月19日
是的。短指南:
- 创建一个属性XML
在/res/values/attrs.xml
中创建一个新的XML文件,包括属性和其类型。
基本上,您需要为包含所有自定义属性的视图设置一个
(这里仅为一个)。我从未找到过可能类型的完整列表,所以您需要查看源代码。我知道的类型是引用(到另一个资源)、颜色、布尔值、尺寸、浮点数、整数和字符串。它们都很容易理解。
- 在您的布局中使用属性
这与您上面所做的方式相同,只有一个例外。您的自定义属性需要自己的XML名称空间。
非常简单。
- 使用传递的值
修改自定义视图的构造函数来解析值。
public MyCustomElement(Context context, AttributeSet attrs) { super(context, attrs); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCustomElement, 0, 0); try { distanceExample = ta.getDimension(R.styleable.MyCustomElement_distanceExample, 100.0f); } finally { ta.recycle(); } // ... }
在此示例中,distanceExample
是一个私有成员变量。 TypedArray
还有许多其他要解析其他类型值的东西。
这就是它的全部。在您的View
中使用解析的值来修改它,例如在onDraw()
中使用它来相应地更改外观。