我得到了一个GridLayout
,里面有两个或更多的按钮,所有的按钮都必须具有相同的宽度。我的问题是,当按钮具有不同的文本行号时,按钮的marginTop
也会不同。我怎样才能解决这个问题?我想要所有的按钮在相同的高度位置。如何以编程方式设置按钮layout_gravity =“fill_vertical”?
谢谢。
我已经尝试设置Gravity
与FILL_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);
}
这里是图片:
现在这是工作压力太大。
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));
添加规则与第一个按钮对齐顶部 – OMAK
你不能设置按钮来填充父项的高度吗? – Hardik4560
@OMAK我尝试addRule(RelativeLayout.ALIGN_TOP)&ALIGN_PARENT_TOP,两者都不起作用。 – JamesChiang