Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RelativeLayout所有程序未正确对齐_Java_Android_Button_Layout_Textview - Fatal编程技术网

Java RelativeLayout所有程序未正确对齐

Java RelativeLayout所有程序未正确对齐,java,android,button,layout,textview,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(tL

下面是它正在生成的代码和布局

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);
…生成此布局:


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

为什么有TextView?@Squonk它们纯粹用于测试目的。它们不会出现在最终产品中。首先,你的第三张图片与第一张完全相同。第二,第二个布局是混乱的,因为其中有第四个文本视图,这迫使父布局水平扩展以适应它。我知道第一个和第三个图像是相同的。我刚才展示了两个单独的代码片段,它们都产生了不正确的布局。而且,第一个和第三个图像也有第四个文本视图,所以为什么这些父布局没有像第二个图像那样水平扩展呢?