2014-11-08 2 views
0

У меня есть данные, как этотДобавить Linear-макет для Linear-макета в андроиде Динамически

<LinearLayout> ===> vertical 
    <LinearLayout> ===>Horizontal 
     <TextView> <TextView> <TextView> <TextView> 
    <LinearLayout> ===>Horizontal 
     <TextView> <TextView> <TextView> <TextView> 
    <LinearLayout> ===>Horizontal 
     <TextView> <TextView> <TextView> <TextView> 

<LinearLayout> 

Как добавить эти макеты динамически?

Спасибо

+0

Это не очень сложно. Вам нужно установить 'LayoutParams' для всех' LinearLayout' и добавить представление в соответствии с вашим требованием. – Piyush

+0

не так много сложного может также создать список рассылки –

ответ

0

Я позабочусь о коде, который я сделал. Обратите внимание, что я не буду кодировать вас (пока что помогаю кому-то из SO на данный момент). Не стесняйтесь, если у вас есть какие-либо вопросы.

Здесь я добавить spinner и button на linear layout в onClick, все динамически:

else if(v == btnAddChild) 
    { 
     LinearLayout dynamicLayout = new LinearLayout(this); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     params.weight = 1.0f; 
     params.gravity = Gravity.CENTER_VERTICAL; 
     dynamicLayout.setLayoutParams(params); 
     dynamicLayout.setOrientation(LinearLayout.HORIZONTAL); 
     int layoutId = totalDynamicChild + 1000; //dynamicLayout always have dynamic spinnser's id + 1000 to avoid same id 
     dynamicLayout.setId(layoutId); 

     Spinner spinner = new Spinner(this); 
     spinner.setLayoutParams(params); 
     spinner.setAdapter(spinChildAdapter); 
     spinner.setId(totalDynamicChild); 
     spinnderIdList.add(totalDynamicChild); 

     ImageButton btn = new ImageButton(this); 
     btn.setImageDrawable(getResources().getDrawable(R.drawable.action_delete)); 
     btn.setBackgroundResource(0); 
     btn.setLayoutParams(params); 
     int btnId = totalDynamicChild + 2000; //btn always have dynamic spinnser's id + 2000 to avoid same id 
     btn.setId(btnId); 

     dynamicLayout.addView(spinner); 
     dynamicLayout.addView(btn); 
     parentSpinner.addView(dynamicLayout); 
     totalDynamicChild++; 

И это, как я извлечь spinner's значение:

for(int i = 0; i < totalDynamicChild; i++) 
    { 
     Spinner s = (Spinner)findViewById(spinnderIdList.get(i)); 
     postParam.put("child_id[" + i + "]", "example"); 
    } 
0

Создать один XML для вертикальный LinearLayout с ScrollView как родительский, поэтому всякий раз, когда LinearLayout no of child больше, он будет применять прокрутку.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

    </LinearLayout> 
</ScrollView> 

Другой xml для вертикального LinearLayout child, который содержит 4 TextView в горизонтальном LinearLayout.

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1"/> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1"/> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1"/> 

<TextView 
    android:id="@+id/textView4" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1"/> 

Теперь, как добавить элемент в вертикальной LinearLayout:

private LinearLayout container; 
private Context context; 
private int size=3; 
private int counter=1; 

context = this; 
container = (LinearLayout) findViewById(R.id.container); 

for (int i=0;i<size;i++){ 
    View view = LayoutInflater.from(context).inflate(R.layout.row_item,null); 
    TextView textView1 = (TextView) view.findViewById(R.id.textView1); 
    TextView textView2 = (TextView) view.findViewById(R.id.textView2); 
    TextView textView3 = (TextView) view.findViewById(R.id.textView3); 
    TextView textView4 = (TextView) view.findViewById(R.id.textView4); 

    textView1.setText(String.valueOf(counter++)); 
    textView2.setText(String.valueOf(counter++)); 
    textView3.setText(String.valueOf(counter++)); 
    textView4.setText(String.valueOf(counter++)); 

    view.setTag((i+1)); 
    view.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(context,String.valueOf((Integer)v.getTag()),Toast.LENGTH_SHORT).show(); 
      } 
    }); 
    container.addView(view); 
} 
Смежные вопросы