RelativeLayout以编程方式无法正确对齐

时间:2013-12-31 19:10:34

标签: java android button layout textview

以下是它正在制作的代码和布局。

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);
}

enter image description here

注意从底部注释掉的第3行。标有“3”的按钮,我想要在“2”下面。当我取消注释该行代码时,会发生以下布局。

enter image description here

我认为通过取消注释该行,它只会将该按钮对齐到右边,但它会将整个布局拧出来。我怎样才能实现我的目标?

修改

即使使用此代码:

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);

...产生这种布局:

enter image description here

所以这很接近但仍不完全是理想的输出。

0 个答案:

没有答案