如何将TextViews数组添加到相对布局中而不在android中以编程方式重叠?

问题描述 投票:1回答:1

我正在寻找一个解决我的问题的解决方案,我的所有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 code:

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

                    </RelativeLayout>
java android android-relativelayout
1个回答
-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

© www.soinside.com 2019 - 2024. All rights reserved.