2016-11-02 5 views
1

Я хочу добавить кнопку, которая добавит взгляды один под другим. Я не хочу Listview. Я пробовал настройки id на каждом представлении, а затем добавляю с помощью setID, но когда я нажимаю на кнопку, представления создаются без проблем на одном и том же месте.RelativeLayout добавить несколько видов друг под друга

final Button addView = (Button)findViewById(R.id.addView); 
    mainLayout = (RelativeLayout)findViewById(R.id.activity_mainID); 
    final RelativeLayout rv = new RelativeLayout(MainActivity.this); 
    rv.setId(-1); 
    TextView tx = new TextView(this); 
    rv.setBackgroundColor(ContextCompat.getColor(this,R.color.colorAccent)); 
    rv.addView(tx); 
    mainLayout.addView(rv,100,100); 

    addView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      RelativeLayout view = new RelativeLayout(MainActivity.this); 
      RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(200,200); 
      view.setId(id); 
      TextView tv = new TextView(MainActivity.this); 
      tv.setText("TEXT"+id); 
      view.addView(tv); 
      view.setBackgroundColor(ContextCompat.getColor(MainActivity.this,R.color.colorPrimary)); 
      params1.addRule(RelativeLayout.BELOW, id--); 
      mainLayout.addView(view,params1); 
      id=id+2; 
     } 
    }); 

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:weightSum="10" 
    android:id="@+id/activity_mainID" 
    > 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/addView" 
    android:text="ADD" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true"/> 

    </RelativeLayout> 

EDIT: Я решить мою проблему с помощью LinearLayout, но до сих пор не знаю, что это неправильно в моем первом растворе. Если кто-то обнаружит это, пожалуйста, поделитесь со мной.

+1

Почему вы не используете linearLayout? – JCDecary

+0

Потому что я хочу, чтобы он был доступен для просмотра и думал, что если setId может быть полезным – Expiredmind

+0

, вы можете использовать setTag и getTag – JCDecary

ответ

0

Я попытался сделать то же самое и столкнулся с нечетными проблемами, когда мой первоначальный идентификатор был равен -1, 0 или 1. Установите его на более высокое начальное число (я установил его на 4), и внезапно все работает так, как ожидалось. Я думаю, причина в том, что эти значения представляют собой константы в классе ViewGroup.