2014-02-07 86 views
0

我有一個TableRow,我添加了一些項目來顯示,一切順利。不過,當我想添加一個佈局修改的按鈕時,它看起來並沒有被繪製。這裏是代碼:如何修改ImageButton佈局

ImageButton botonBorrar = new ImageButton(this); 

botonBorrar.setImageResource(R.drawable.discard_light); 

LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    LinearLayout.LayoutParams.MATCH_PARENT); 

buttonParams.setMargins(15, 10, 10, 10); 
botonBorrar.setLayoutParams(buttonParams); 

myRow.addView(botonBorrar); 

這裏有什麼可能是錯誤的?我跟着很多關於這個帖子,但似乎沒有任何糾正我的問題。

在此先感謝。

回答

1

我想你應該使用TableRow.LayoutParams而不是LinearLayout.LayoutParams。

TableRow的子項不需要指定XML文件中的layout_width和layout_height屬性。 (http://developer.android.com/reference/android/widget/TableRow.html

所以,你可以在視圖首先添加按鈕,然後獲得已經生成的LayoutParams並進行修改:

myRow.addView(botonBorrar); 
TableRow.LayoutParams buttonParams = (TableRow.LayoutParams)bottonBorrar.getLayoutParams(); 
buttonParams.setMargins(15, 10, 10, 10); 
//botonBorrar.setLayoutParams(buttonParams); - if you add button to the view, you do not have to set modified layout params explicitly. 
+0

非常感謝,它的工作!。儘管如此,它似乎並沒有保持我設置到該行的高度參數。我可以通過設置TextView的是我用來填充行之一的高度去做,但不能管理通過設定\t \t TableLayout.LayoutParams tableRowParams =新TableLayout.LayoutParams( \t \t \t \t TableLayout.LayoutParams.MATCH_PARENT得到它, \t \t \t \t 100);它會忽略100像素高度 – kankamuso

+1

,我認爲問題在於新的layoutparams。如果將視圖添加到佈局中,則會自動生成該視圖的佈局佈局 - 並且對於系統而言是絕對正確的。所以修改這些automaticaly生成的layoutparams你可以改變佈局。我測試下一行: \t \t TableRow.LayoutParams buttonParams2 =(TableRow.LayoutParams)botonBorrar2 \t \t \t \t .getLayoutParams(); \t \t buttonParams2.height = 800; 它工作。 –

+1

非常感謝Magarita。我想我現在很瞭解它。這只是獲得已有佈局而不是覆蓋它的問題。 – kankamuso