2014-02-07 87 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