以编程方式安装Android TextView和EditText

时间:2017-02-26 07:48:09

标签: android android-layout

我想添加5块TextView和编辑文本,如下所示

文本视图----编辑文本----文本视图
文本视图----编辑文本----文本视图
文本视图----编辑文本----文本视图
文本视图----编辑文本----文本视图
文本视图----编辑文本----文本视图

我尝试了以下内容:

LinearLayout rootLayout = (LinearLayout) findViewById(R.id.root_layout);
    for (int i = 0; i < 6; i++) {
        rootLayout.setOrientation(LinearLayout.HORIZONTAL);
        TextView textView = new TextView(this);
        textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT,1));
        textView.setText("Text");
        rootLayout.addView(textView);

        EditText editText = new EditText(this);
        editText.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT,1));
        rootLayout.addView (editText);

        TextView addTextView = new TextView(this);
        addTextView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT,1));
        addTextView.setText("Additional Text");
        rootLayout.addView(addTextViewtextView);

//            TextView dividerLine = new TextView(this);
//            rootLayout.setOrientation(LinearLayout.VERTICAL);
//            rootLayout.addView(dividerLine);

使用上面的代码水平添加所有15(3 * 5)视图。当我取消注释最后三行时,所有视图都是垂直添加的。看来布局是根据程序中的最后一个setOrientation语句设置的。

2 个答案:

答案 0 :(得分:2)

LinearLayout rootLayout = (LinearLayout) findViewById(R.id.root_layout);
rootLayout.setOrientation(LinearLayout.VERTICAL);
//this layout still needs to be vertical to hold the children.
for (int i = 0; i < 6; i++) {

   //make a new horizontal LinearLayout each time to hold the children.
    LinearLayout temp = new LinearLayout(this);
    temp.setOrientation(LinearLayout.HORIZONTAL);
    temp.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT,1));

    TextView textView = new TextView(this);
    textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT,1));
    textView.setText("Text");
    temp.addView(textView); //add them to this temporary layout.

    EditText editText = new EditText(this);
    editText.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT,1));
    temp.addView (editText);

    TextView addTextView = new TextView(this);
    addTextView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT,1));
    addTextView.setText("Additional Text");
    temp.addView(addTextViewtextView);

    rootLayout.addView(temp);

通过这种方式,您可以在其中添加多个线性布局。所以基本上,对于每组TextView,您要单独LinearLayout,然后将这些布局中的每一个添加到仍然垂直方向的主LinearLayout

答案 1 :(得分:1)

您的代码应该遵循这种方式。

  1. findViewById()的根布局,将其方向设置为垂直。

  2. 开始循环

  3. 采用线性布局,将方向设置为水平 3.1添加文本视图 3.2添加编辑文本 3.3添加文本视图

  4. 将此第3步线性布局添加到根布局。

  5. 用于循环停止。