简体   繁体   中英

How add array of TextViews into Relative layout without overlapping programmatically in android?

I'm looking for a solution to solve my problem which all my TextViews overlaps on themselves, when are added to Relative Layout. In fact, I need to do put them after each. other I've read existed answers, I followed them but nothing could solve it yet. can someone tell me where I did wrongly?

here is my code:

            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>

You can achieve this using Relative layout

So this is the main idea , first you define your relation layout

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

Then you define a param variable like this

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

After that you define your textView with an id (in your case this id can be its position in the array)

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

The next textView will be declared like this

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

Finally you set your view using the params you defined

  layout.addView(tv2, params1);

Here is a complete example you can check answer by @AndiM

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM