declare-styleable是用于定义自定义属性的一种方式。
首先,在res/values目录下创建一个attrs.xml文件,用于定义自定义属性。示例代码如下:
在这个例子中,我们定义了一个名为MyCustomView的styleable,包含了三个属性:customAttribute、customColor和customBoolean。
然后,在自定义View的构造函数中,可以通过TypedArray来获取这些自定义属性的值。示例代码如下:
public class MyCustomView extends View { private String customAttribute; private int customColor; private boolean customBoolean; public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView); customAttribute = a.getString(R.styleable.MyCustomView_customAttribute); customColor = a.getColor(R.styleable.MyCustomView_customColor, Color.BLACK); customBoolean = a.getBoolean(R.styleable.MyCustomView_customBoolean, false); a.recycle(); // 进行其他初始化操作 } // 其他自定义View的代码 }
在这个例子中,我们通过TypedArray的getXXX()方法来获取自定义属性的值,并提供了默认值(在这里是Color.BLACK和false)。
最后,在布局文件中使用自定义View时,可以通过XML属性来设置自定义属性的值。示例代码如下:
在这个例子中,我们使用了app命名空间来引用自定义属性,并设置了相应的值。
以上就是declare-styleable的基本用法。可以根据需要定义更多的自定义属性,并在自定义View中使用它们。