2017-02-24 10 views
0

私は1つのことに苦労しています。たとえば、高さと幅がmatch_parentの線形レイアウトがあるとします。 1から6までのビューを設定し、実行時にサーバーからどれくらい受け取るかはわかりません。問題は、どのようにレイアウト内で並べ替えることができるので、現在のビューの数に応じて幅を調整することができるかです。 3つ以上のビューがある場合は、それらを2行に配置する必要があります。 this is how it should look likeビュー数に応じてレイアウトのビューを並べ替え

私はレイアウトの重みを使うことを考えていましたが、2行に置くことができる解決策は考えられませんでした。何か案は ?

答えて

0

線形レイアウトにビューを動的に追加する必要があります。

まず、xmlでコンテナのレイアウトを作成します。

<LinearLayout 
    android:id="@+id/containerLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
/> 

次にチェックし、あなたがthis.Thisような何かをしなければならない

if(list.size()<=3) 
    { 
     Then assign weight to container. i.e weight=list.size 

      for(int i=0;i<size;i++) 
      { 
      TextView textview = new TextView(this); 
      textview.setText(brandName); 
      textview.setWeight(1f); 

      container.addView(textview); 
      } 
    } 
    else 
    { 

     int totalRows= (list.size/3)+(list.size%3); 
     int count=0; 

     for(int i=0;i<totalRows;i++) 
     { 
       LinearLayout newLL = new LinearLayout(mContext); 
       newLL.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
       newLL.setOrientation(LinearLayout.HORIZONTAL); 

       for(int j=count;j<count+3;j++) 
       { 
        count++; 
        TextView textview = new TextView(this); 
        textview.setText(brandName); 
        newLL.addView(textview); 
       } 
       container.addView(newLL); 
     } 

    } 

は、実際のコードではありません。

+0

これは実際に動作します、ありがとうございます。 – Traabefi

+0

親切に答えを受け入れます。 – Ragini

0

根付きLinearLayoutではlistviewを使用し、他のxmlレイアウトでは単一のリスト項目を設計し、単一のリスト項目用のカスタムアダプタを作成し、リストビューに設定する必要があります。 this answer will help you how to create custome adapter

関連する問題