私は 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>
このコードは何も表示しません。私はあなたの答え/アドバイスに感謝します。