我有一个扩展按钮的课程。我想为它添加一个额外的属性。有没有办法从XML初始化该属性?例如:
<MyButton android:id="@+id/myBtn" myValue="Hello World"></MyButton>
public class MyButton extends Button{
private String myValue = "";
public CalcButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
}
答案 0 :(得分:1)
是。您可以拥有自定义属性并以XML格式为其指定值。您甚至可以分配方法来处理小部件上的自定义事件。 Long press definition at XML layout, like android:onClick does
所需的步骤。
然后在 res / values / 中添加文件attrs.xml,内容如下:
<xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyButton">
<attr name="myValue" format="string"/>
</declare-styleable>
</resources>
在布局xml中使用新属性:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/**your.package**"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<your.package.MyButton
android:id="@+id/theId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
custom:myValue="myDoSomething"
/>
<!-- Other stuff -->
</LinearLayout>