如何在不以编程方式在Android中重叠的情况下将TextViews数组添加到相对布局中?

时间:2019-03-29 14:02:52

标签: java android android-relativelayout

我正在寻找一种解决方案,以解决将我的所有TextView添加到相对布局时会相互重叠的问题。实际上,我需要每次都放置它们。其他我已经阅读了存在的答案,我遵循了它们,但还没有解决的办法。有人可以告诉我我做错了什么吗?

这是我的代码:

            for (int i=0;i<parts.length;i++)
        {
            valueTV[i] = new TextView(this);
            valueTV[i].setText(parts[i]);
            valueTV[i].setId(i);
            valueTV[i].setWidth(300);

            RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams
                    (RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                linearLayout_Skills.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
            }
            linearLayout_Skills.setBackgroundColor(getResources().getColor(R.color.blue));
            if(i>=1)
            {
                lparams.addRule(RelativeLayout.END_OF, valueTV[i-1].getId());
                valueTV[i].setLayoutParams(lparams);
            }else {
                lparams.addRule(RelativeLayout.ALIGN_PARENT_START);
                valueTV[i].setLayoutParams(lparams);
            }
            linearLayout_Skills.addView(valueTV[i]);


        }

XML代码:

                    <RelativeLayout
                        android:id="@+id/linearSkills"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layoutDirection="rtl"
                        android:paddingTop="5dp"            

                    </RelativeLayout>

1 个答案:

答案 0 :(得分:-1)

您可以使用Relative layout

所以这是主要思想,首先定义关系布局

  //layout variable is your relative layout
  RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
  layout.setLayoutParams(layoutParams); 

然后您定义这样的param变量

  RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

之后,您可以使用id定义textView(在您的情况下,该id可以是其在数组中的位置)

  TextView tv1 = new TextView(this);
  tv1.setId(1);
  tv1.setText("textView1");

下一个textView将像这样声明

  TextView tv2 = new TextView(this);
  params1.addRule(RelativeLayout.BELOW, tv1.getId());
  tv2.setId(2);
  tv2.setText("textView2");

最后,使用定义的参数设置视图

  layout.addView(tv2, params1);

这是一个完整的示例,您可以检查answer by @AndiM