2012-04-15 14 views
0

之前,我想使點擊矩形。我環顧四周,我創造了相當不錯的代碼:)繪製矩形點擊,我不知道怎麼PARAMS組的onDraw方法

創建我自己的矩形類的構造函數,然後我設置它的一些價值觀。 然而,的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); 
    } 
} 

我可以說,跑項目後,我只得到一個矩形。難怪每個矩形都有相同的位置。請幫忙。


結果應顯示可點擊矩形的象棋。

回答

0

嘗試使用

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

使用

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

與你自己的參數爲LayoutParams,而不是

ll.addView(miniRectangle); 

和的onDraw(開始)相對於你的LayoutParams值。

+0

沒有,我想把那個長方形的水平,並添加矩形的另一行。它應該看起來像一個可點擊矩形的國際象棋.. – deadfish 2012-04-16 13:54:42

+0

一個簡單的LinearLayout將無法正常工作。嘗試將您的矩形放置在水平佈局中,這應該放入垂直線性佈局中。 或你以一個相對佈局。 – alex 2012-04-16 14:02:36