2012-08-23 66 views
0

我試圖把下面的另一個使用佈局參數的ImageView的,但它不工作.. 我想做到這一點:http://imgur.com/eZfEI廣場imageview的編程

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 

        iv_album[i] = new ImageView(main.this); 
        iv_album[i].setImageBitmap(resized_a_p); 
        iv_album[i].setPadding(0, 5, 5, 0); 
        iv_album[i].setId(i); 
        iv_album[i].setOnLongClickListener(main.this); 
        iv_album[i].setOnClickListener(main.this); 
        if (i>1){ 
         params.addRule(RelativeLayout.BELOW, iv_album[i].getId() - 1); 
        } 

有什麼不好?

+0

'iv_album [I] .getId() - 1'不會給你相應的ID。 'iv_album [i - 1] .getId(*)*可能*基於您提供的小代碼的假設工作。 – DeeV

+0

我以前就是這樣,它不會改變什麼.. 我的「我」變量從1開始,所以ID從來不是0 ..我在某處讀到這可能會給出錯誤..沒有任何區別。 – Pl4za

+0

在我看來,你不會將LayoutParams'params'應用於ImageView。我相信你會想在底部的某處調用'iv_album [i] .setLayoutParams(...)。 –

回答

1

創建的LayoutParams每個ImageView的工作對我來說:

RelativeLayout layout = (RelativeLayout) this.findViewById(R.id.layoutConnection); 

ImageView[] iv_album = new ImageView[8]; 
for (int i = 0; i < 8; i++) { 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 

    iv_album[i] = new ImageView(this); 
    iv_album[i].setImageDrawable(this.getResources().getDrawable(R.drawable.ic_launcher)); 
    iv_album[i].setPadding(0, 5, 5, 0); 
    iv_album[i].setId(i + 1); // BELOW id 0 doesn't work 
    if (i > 0) { 
     params.addRule(RelativeLayout.BELOW, iv_album[i - 1].getId()); 
    } 

    layout.addView(iv_album[i], params); 
} 

希望它可以幫助

+0

我愛你!只需要爲每個imageview創建一個新的layoutparams就像你說的! – Pl4za