我希望我的问题可以理解,因为我是 Android 初学者,英语不是我的母语。
我想创建一个自定义小部件,它将几个 TextView、ProgressBar 和 Button 组合在一起。目标是能够在具有自定义属性的 XML 布局文件中声明我的自定义小部件,这些属性定义按钮文本等......但是内部 Android 小部件的配置将是相同的,并在我的类中定义。
我已经找到了如何声明自定义属性和创建自定义小部件,但在放置现有 Android 小部件的简单情况下,我没有找到任何文档或示例。我很惊讶,所以也许我朝错误的方向搜索。
在我正在测试的简单代码下方。
自定义类:
public class CastleViewItem extends View {
private TextView item;
public CastleViewItem (Context c, AttributeSet attributes) {
super(c, attributes);
item = new TextView(c);
TypedArray attrs = c.obtainStyledAttributes(attributes, R.styleable.CastleViewItem);
item.setText(attrs.getString(R.styleable.CastleViewItem_name).toString());
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// I suppose there is some code to add here.
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(200, 200);
// item.getWidth()/item.getHeight() return 0, so I fixed temporarily the value to ensure
// the widget will be displayed.
}
}
XML 自定义属性声明:
<resources>
<declare-styleable name="CastleViewItem">
<attr name="name" format="string" />
</declare-styleable>
</resources>
XML 布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ffbdx="http://schemas.android.com/apk/res/bdx.fleurey"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<bdx.fleurey.CastleViewItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ffbdx:name="Moat" />
</LinearLayout>
此代码不显示任何内容。我希望我很清楚,在此先感谢您的回答/建议。