java - 创建没有 XML 文件的relativelayout

标签 java android xml android-relativelayout layoutparams

我需要纯粹用 Java 而不是 XML 创建此布局。这意味着我在 Eclipse 中没有用于该项目的 XML。现在我的布局如下所示:

enter image description here

您可能无法从图片中看出,但 block 0、1 和 3 都在彼此之上。我需要 5 个 block 看起来像这样:

 0  1  2
 3  4

这是我第一次不使用 XML 文件来制作 Activity 布局,因此我正在慢慢地解决这些问题。如果您发现我在可以更有效地编写代码时完全以“长”方式完成某些事情,请告诉我。

但我的问题是,为什么这些 block 没有按照我需要的顺序排列?我觉得我把一些简单的事情搞砸了。

public class Puzzle extends Activity {

    int z1to5 = 50;
    int z6to10 = 50;

    @Override
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.XXXXX);

        RelativeLayout relativelayout = new RelativeLayout(getApplicationContext());

        Button bList[] = new Button[5];

        for (int i = 0; i < 5; i++) {
            Button button = new Button(getApplicationContext());
            button = new Button(getApplicationContext());
            button.setId(i);
            button.setText("" + i);
            relativelayout.addView(button);
            bList[i] = button;
        }

        RelativeLayout.LayoutParams params0 = new RelativeLayout.LayoutParams(150, 150);
            bList[0].setLayoutParams(params0);

        RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(150, 150);
            params1.addRule(RelativeLayout.RIGHT_OF, bList[0].getId());
            bList[1].setLayoutParams(params1);

        RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(150, 150);
            params2.addRule(RelativeLayout.RIGHT_OF, bList[1].getId());
            bList[2].setLayoutParams(params2);

        RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(150, 150);
            params3.addRule(RelativeLayout.BELOW, bList[0].getId());
            bList[3].setLayoutParams(params3);

        RelativeLayout.LayoutParams params4 = new RelativeLayout.LayoutParams(150, 150);
            params4.addRule(RelativeLayout.RIGHT_OF, bList[3].getId());
            params4.addRule(RelativeLayout.BELOW, bList[1].getId());
            bList[4].setLayoutParams(params4);

        setContentView(relativelayout);
    }
}

最佳答案

我通过这个更改得到了它:

for (int i = 0; i < 5; i++) {
        Button button = new Button(getApplicationContext());
        button = new Button(getApplicationContext());
        button.setId(i+1);
        button.setText("" + i);
        relativelayout.addView(button);
        bList[i] = button;
    }

button.setId(i+1);

我在文档中找不到它,但也许当您以编程方式创建新 View 时,默认的 NO_ID 等于 0

关于java - 创建没有 XML 文件的relativelayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152671/

相关文章:

java - 在我按下 GUI 按钮之一后,Applet 中未捕获关键事件

java - 有时,确实会创建唯一 id 的消费者组,并且消费者会在没有分区的情况下卡住

android - Realm和Retrofit,UI线程外如何保存?

java - 我可以选择 Spring 使用什么解析器来解析 html 文件吗?

Python minidom 从 XML 中提取文本

c++ - 用于 C++ 的 XSLT 2.0 库

java - for 循环如何将文本放入 3 个 JTextArea

java - ava.lang.IllegalStateException : Could not execute method of the activity

android - ConstraintLayout 内的 ScrollView 不工作

java - 为什么mToolbar和Toolbar在android studio中不起作用