扩展按钮android,xml布局

时间:2011-05-16 22:24:17

标签: android layout button

我有以下课程(包含在另一个课程中)

class RecordButton extends Button {
    boolean mStartRecording = true;

    OnClickListener clicker = new OnClickListener() {
        public void onClick(View v) {
            onRecord(mStartRecording);
            if (mStartRecording) {
                setText("Stop recording");
            } else {
                setText("Start recording");
            }
            mStartRecording = !mStartRecording;
        }
    };

    public RecordButton(Context ctx) {
        super(ctx);
        setText("Start recording");
        setOnClickListener(clicker);
    }
}

使用以下代码显示按钮:

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    LinearLayout ll = new LinearLayout(this);
    mRecordButton = new RecordButton(this);
    ll.addView(mRecordButton,
        new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            0));
    setContentView(ll);
}

如何将Button布局定义为.xml文件而不是在java代码中执行?

我试过了:

<AudioRecordTest.test.RecordButton
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Button"
    android:id="@+id/record" />   

但它不起作用......

非常感谢,

勒夫

1 个答案:

答案 0 :(得分:2)

我理解“(包含在另一个班级中)”因为你有内部课程 RecordButton

假设你的包是AudioRecordTest.test(这是一个非常糟糕的名字选择)而你的RecordButton类是AudioRecord.class的内部类,你需要使用:

 <view class="AudioRecordTest.test.AudioRecord$RecordButton"

使用$符号分隔内部类。您需要在引号内写限定名称。另外,请确保创建类public static,否则它将不可见。

BTW:你有什么特别的原因把它作为一个内部类创建而不是分开吗?