以下是它正在制作的代码和布局。
public void level1() {
tList = getTList(level);
bList = getBList(level);
// textviews
RelativeLayout.LayoutParams params00 = new RelativeLayout.LayoutParams(buttonDimension, buttonDimension);
gameplayRL.addView(tList[0], params00);
RelativeLayout.LayoutParams params11 = new RelativeLayout.LayoutParams(buttonDimension, buttonDimension);
params11.addRule(RelativeLayout.RIGHT_OF, tList[0].getId());
gameplayRL.addView(tList[1], params11);
RelativeLayout.LayoutParams params22 = new RelativeLayout.LayoutParams(buttonDimension, buttonDimension);
params22.addRule(RelativeLayout.BELOW, tList[0].getId());
gameplayRL.addView(tList[2], params22);
RelativeLayout.LayoutParams params33 = new RelativeLayout.LayoutParams(buttonDimension, buttonDimension);
params33.addRule(RelativeLayout.RIGHT_OF, tList[2].getId());
params33.addRule(RelativeLayout.BELOW, tList[0].getId());
gameplayRL.addView(tList[3], params33);
// buttons
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(buttonDimension, buttonDimension);
gameplayRL.addView(bList[0], params1);
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(buttonDimension, buttonDimension);
params2.addRule(RelativeLayout.RIGHT_OF, bList[0].getId());
gameplayRL.addView(bList[1], params2);
RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(buttonDimension, buttonDimension);
params3.addRule(RelativeLayout.BELOW, bList[0].getId());
//params3.addRule(RelativeLayout.RIGHT_OF, bList[0].getId()); // this is the problem line
gameplayRL.addView(bList[2], params3);
}
注意从底部注释掉的第3行。标有“3”的按钮,我想要在“2”下面。当我取消注释该行代码时,会发生以下布局。
我认为通过取消注释该行,它只会将该按钮对齐到右边,但它会将整个布局拧出来。我怎样才能实现我的目标?
修改
即使使用此代码:
RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(buttonDimension, buttonDimension);
params3.addRule(RelativeLayout.RIGHT_OF, tList[2].getId());
params3.addRule(RelativeLayout.BELOW, tList[0].getId());
gameplayRL.addView(bList[2], params3);
...产生这种布局:
所以这很接近但仍不完全是理想的输出。