0

Android でカスタム ビューを作成しようとしています。MainActivity と XML ファイルのすべての arrtrs リストについて言及していますが、次のエラーがありますmain.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews.piechart"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.example.customviews.charting.piechart.MainActivity
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        custom:titleText="Background color"
        custom:valueColor="@android:color/holo_green_light"
        />

</LinearLayout> 
4

1 に答える 1

0

引数のないコンストラクターはありますか?

次のようなコンストラクターを追加する必要があります。

public MainActivity(Context context, AttributeSet attrs) {
    super(context, attrs);
}

また

public MainActivity(Context context) {
    super(context);
}

カスタムビューの簡単な例を求めました:

public class BirdView extends ImageView {

private float direction = 0;
Paint paint = new Paint();

public BirdView(Context context) {
    super(context);
}

public BirdView(Context context, AttributeSet attrs) {
    super(context, attrs);
    paint.setColor(Color.WHITE);
    paint.setStrokeWidth(6);
}

public BirdView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
            MeasureSpec.getSize(heightMeasureSpec));
}

@Override
public void draw(Canvas canvas) {
    canvas.save();
    int stratX = getWidth() / 2;
    int startY = getHeight() / 2;
    canvas.rotate(direction, stratX, startY);
    super.draw(canvas);
    canvas.restore();
    canvas.drawLine(stratX, startY, stratX, startY + 80, paint);
}

public void update(float dir) {
    direction = dir;
    invalidate();
}

}

于 2013-03-21T09:01:14.990 に答える