0

クリック可能な長方形を作ろうとしています。私は周りを見回して、かなり良いコードを作成しました:)

独自の長方形クラスのコンストラクターを作成し、その値をいくつか設定します。ただし、onDraw メソッドは長方形を作成して描画するように見えますが、コンストラクターの新しい変数の値はありません。私は何を間違っていますか?

これはデフォルトの MyActivity クラスです:

ll = (LinearLayout)findViewById(R.id.linearlayout);
List<MiniRectangle> miniRectangleList = new ArrayList<MiniRectangle>();

for(int i=0;i<8;i++)
{
    int numberRandom = r.nextInt(3);

    MiniRectangle miniRectangle = new MiniRectangle(this);
    miniRectangle.set_color(colors.get(numberRandom));
    miniRectangle.set_size(50);
    miniRectangle.set_id_color(numberRandom);
    miniRectangle.set_number(i);

    ll.addView(miniRectangle);

    miniRectangleList.add(miniRectangle);
}

setContentView(ll);

これは私自身の長方形クラスです

public class MiniRectangle extends View implements View.OnClickListener {

    Context context;
    int _size;
    int _color;
    int _id_color;
    int _number;

    public MiniRectangle(Context context) {
        super(context);
        this.context = context;
        setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        System.out.println(get_number());
        Toast.makeText(context, get_number(), Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Paint paint = new Paint();
        paint.setColor(get_color());
        paint.setStrokeWidth(1);

        int kleft = (get_number() % 8) * get_size();
        int kright = kleft + get_size() - 2;

        int ktop = 1 * get_size();
        int kbottom = ktop + get_size() - 2;

        canvas.drawRect(kleft, ktop, kright, kbottom, paint);
    }
}

プロジェクトを実行した後、長方形が1つしか得られないと言えます。すべての長方形が同じ位置にあるのも不思議ではありません。助けてください。


結果には、クリック可能な四角形のチェスが表示されます。

4

1 に答える 1

0

使用してみてください

ll.addView(miniRectangle, new LayoutParams(50, 50));

代わりにLayoutParamsの独自のパラメータを使用します

ll.addView(miniRectangle);

onDraw()で開始します

canvas.drawRect(0, 0, get_size(), get_size(), paint);

LayoutParams値に関して。

于 2012-04-15T21:07:14.597 に答える