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);
    }
}

我可以说在运行项目后我只得到一个矩形。难怪每个矩形都有相同的位置。请帮忙。


结果应该显示可点击矩形的国际象棋。

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 回答