Android - 使用自定义属性创建自定义UI

11 浏览
0 Comments

Android - 使用自定义属性创建自定义UI

我知道可以通过视图或特定的UI元素扩展来创建自定义的UI元素。但是是否可以为新创建的UI元素定义新的属性或属性(我指的是非继承的,而是全新的,以定义某些特定的行为,我无法使用默认属性或属性处理)

例如,元素my custom element:

/>

因此,是否可以定义MyCustomValue

谢谢

admin 更改状态以发布 2023年5月19日
0
0 Comments

在您的res/values文件夹中创建attr.xml。在那里,您可以定义您的属性:


    

。然后,当您想要在布局文件中使用它时,您必须添加

xmlns:customname="http://schemas.android.com/apk/res/your.package.name"

,然后您可以使用customname:myCustomValue =“”的值。

0
0 Comments

是的。短指南:

  1. 创建一个属性XML

/res/values/attrs.xml中创建一个新的XML文件,包括属性和其类型。



    
        
    

基本上,您需要为包含所有自定义属性的视图设置一个(这里仅为一个)。我从未找到过可能类型的完整列表,所以您需要查看源代码。我知道的类型是引用(到另一个资源)、颜色、布尔值、尺寸、浮点数、整数和字符串。它们都很容易理解。

  1. 在您的布局中使用属性

这与您上面所做的方式相同,只有一个例外。您的自定义属性需要自己的XML名称空间。


非常简单。

  1. 使用传递的值

修改自定义视图的构造函数来解析值。

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()中使用它来相应地更改外观。

0