在Android中设置自定义视图的属性

时间:2011-04-15 05:29:15

标签: android xml view

我有一个扩展按钮的课程。我想为它添加一个额外的属性。有没有办法从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);
}
}

1 个答案:

答案 0 :(得分:1)

是。您可以拥有自定义属性并以XML格式为其指定值。您甚至可以分配方法来处理小部件上的自定义事件。 Long press definition at XML layout, like android:onClick does

所需的步骤。

  1. 实施自定义小部件。
  2. 然后在 res / values / 中添加文件attrs.xml,内容如下:

    <xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="MyButton">
            <attr name="myValue" format="string"/>
        </declare-styleable>
    </resources>
    
  3. 在MyButton构造函数中从XML中检索值。请记住实现所有构造函数,而不仅仅是一个。
  4. 在布局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>