1

我正在創建一個表單,用戶輸入他/她的地址,當用戶保存表單時,流程會轉到另一個活動,其中用戶名稱顯示爲其他。我正在使用TableLayout,並且在每個TableRow中,我都有一個TextView,它顯示了可以用來刪除條目的textview旁邊的名稱和ImageButton。現在,當我運行應用程序時,我只能看到佈局中的TextView,ImageButton不可見。有人請幫助我,我哪裏出錯了?動態添加到表格中時ImageButton不可見

這裏是我的代碼部分:

if (requestCode == REC_INFO && resultCode == RESULT_OK && data != null) { 
     RecipientArray = (ArrayList<Person>) data 
       .getSerializableExtra("RecArray"); 

     TableLayout tbl = new TableLayout(this); 
     TextView[] tv = new TextView[RecipientArray.size()]; 
     ImageButton delete_btns[] = new ImageButton[RecipientArray.size()]; 
     TableRow tr[] = new TableRow[RecipientArray.size()]; 
     for (int i = 0; i < RecipientArray.size(); i++) { 

      tv[i] = new TextView(this); 
      tv[i].setBackgroundResource(R.drawable.fill_rece); 
      Person p = RecipientArray.get(i); 
      tv[i].setText(p.getName()); 
      tv[i].setTextColor(Color.WHITE); 
      delete_btns[i] = new ImageButton(this); 
      delete_btns[i] 
        .setImageResource(R.drawable.ipad_postcare_landscape_from); 
      delete_btns[i].setLayoutParams(new LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      tr[i] = new TableRow(this); 
      tr[i].addView(tv[i]); 
      tr[i].addView(delete_btns[i]); 
      tbl.addView(tr[i]); 

     } 
     recs_layout.addView(tbl);//I add the TableLayout to a RelativeLayout 

    } 

回答

1
delete_btns[i] = new ImageButton(this); 
delete_btns[i].setImageResource(R.drawable.ipad_postcare_landscape_from); 
delete_btns[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
Drawable d = delete_btns[i].getDrawable(); 
d.setBounds(0, 0, delete_btns[i].getWidth(), delete_btns[i].getHeight()); 
+0

謝謝,用於響應,我曾通過將線所作的按鈕可見加入delete_btns [I] .setLayoutParams(新的LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));然後我看到了你的答案和最後兩行。他們沒有任何區別。 – user2688158

+0

如果你可以看看這個問題,並建議一個答案..這將有所幫助。 http://stackoverflow.com/questions/20754944/designing-the-tablelayout-which-has-to-be-added-dynamically-within-a-relativelay – user2688158

0

我覺得你textview走的是錶行中的所有空間嘗試,設置佈局PARAMS以及

對於前:

tv[i].setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 2f)); 

而且類似的圖像按鈕

delete_btns[i].setLayoutParams(new TableRow.LayoutParams(
        0, LayoutParams.WRAP_CONTENT,1f)); 

而且到錶行

tr[i].setWeightSum(3f) 

這裏float類型的第三個參數是重量,因爲它被設置爲1f爲您的圖像視圖和TextView中都將佔據平等的空間,您可以更改視圖的它並將其設置爲你所需要的。

在使用重量設定寬度0dp兩者的TextView和ImageView的

+0

感謝您的回覆。當你使用電視[i] .setLayoutParams(新的TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,1f));該文本視圖不可見,但該按鈕是可見的。我已經通過使用TableRow.LayoutParams出現。 – user2688158

+0

如果你可以看看這個問題,並建議一個答案..這將是有益的。 http://stackoverflow.com/questions/20754944/designing-the-tablelayout-which-has-to-be-added-dynamically-within-a-relativelay – user2688158

+0

檢查我的編輯答案 –