2013-05-20 62 views
1

我得到了一个GridLayout,里面有两个或更多的按钮,所有的按钮都必须具有相同的宽度。我的问题是,当按钮具有不同的文本行号时,按钮的marginTop也会不同。我怎样才能解决这个问题?我想要所有的按钮在相同的高度位置。如何以编程方式设置按钮layout_gravity =“fill_vertical”?

谢谢。

我已经尝试设置GravityFILL_VERTICAL,但无法正常工作。

GridLayout grid_neighbor = (GridLayout) findViewById(R.id.grid_neighbors); 
grid_neighbor.setColumnCount(4); 
for (i = 0; i < namelist.length; ++i) { 
    Button temp = new Button(this); 
    temp.setText(namelist[i]);     

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    lp.gravity = Gravity.FILL_VERTICAL; 
    temp.setLayoutParams(lp); 
    //temp.setGravity(Gravity.FILL_VERTICAL); 
    temp.setWidth(button_size); 
    temp.setHeight(button_size); 
    grid_neighbor.addView(temp); 
} 

这里是图片:

My picture

现在这是工作压力太大。

GridLayout grid_neighbor = (GridLayout) findViewById(R.id.grid_neighbors); 
grid_neighbor.setColumnCount(4); 
for (i = 0; i < namelist.length; ++i) { 
    Button temp = new Button(this); 
    temp.setText(namelist[i]);     

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    lp.addRule(RelativeLayout.ALIGN_TOP, temp.getId()); 
    temp.setLayoutParams(lp); 
    //temp.setGravity(Gravity.FILL_VERTICAL); 
    temp.setWidth(button_size); 
    temp.setHeight(button_size); 
    grid_neighbor.addView(temp); 
} 

这将工作!谢谢。

GridLayout.Spec speccolumn = GridLayout.spec(i%4); 
GridLayout.Spec specrow = GridLayout.spec(i/4, GridLayout.TOP); 
grid_neighbor.addView(temp, new GridLayout.LayoutParams(specrow, speccolumn)); 
+0

添加规则与第一个按钮对齐顶部 – OMAK

+0

你不能设置按钮来填充父项的高度吗? – Hardik4560

+0

@OMAK我尝试addRule(RelativeLayout.ALIGN_TOP)&ALIGN_PARENT_TOP,两者都不起作用。 – JamesChiang

回答

0

如果您设置为GridLayout行的基线不能解决您的问题?因为如果在网格元素中有不同数量的文本行,android会自动尝试将文本对齐到相同的基线,而不是对齐行元素。

编辑:我认为设置rowSpec.alignment = TOP(或从http://developer.android.com/reference/android/widget/GridLayout.Alignment.html可用的其中一个对齐)更合适。请参阅http://developer.android.com/reference/android/widget/GridLayout.LayoutParams.html以作进一步参考。

相关问题