2015-11-20 10 views
7

に動的にビューを追加する - すべての良いアライメントないXMLでボタンを追加する場合のGridLayout

When adding buttons through XML

<GridLayout 
    android:id="@+id/social_gl_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerHorizontal="true" 
    android:alignmentMode="alignBounds" 
    android:columnCount="2" 
    android:padding="8dp"> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="45dp" 
     android:layout_columnWeight="1"> 
     <Button 
      android:layout_width="fill_parent" 
      android:layout_height="45dp" 
      android:background="@android:color/holo_blue_light" 
      android:text="Hi"/> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="45dp" 
     android:layout_columnWeight="1"> 
     <Button 
      android:layout_width="fill_parent" 
      android:layout_height="45dp" 
      android:background="@android:color/holo_green_light" 
      android:text="Whatsapp"/> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="45dp" 
     android:layout_columnWeight="1"> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_height="45dp" 
      android:background="@android:color/holo_green_light" 
      android:text="This is facebook" 
      /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="45dp" 
     android:layout_columnWeight="1"> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_height="45dp" 
      android:background="@android:color/holo_blue_light" 
      android:text="On" 
      /> 
    </LinearLayout> 

</GridLayout> 

(コードで)動的にボタンを追加する場合 - アライメント不足しています、列の完全な幅を占めていないボタン

GridLayout gl = (GridLayout) findViewById(R.id.social_gl_content); 
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
    for (int i = 0 ; i < strs.length ; i++) { 
     View v = inflater.inflate(R.layout.grid_item, null); 
     Button b = (Button) v.findViewById(R.id.button); 
     b.setText(strs[i]); 
     if (i % 2 ==0) { 
      b.setBackgroundColor(Color.BLACK); 
     }else{ 
      b.setBackgroundColor(Color.BLUE); 
     } 
     gl.addView(v); 
    } 

enter image description here

+0

ここで見てみましょう。.. http://stackoverflow.com/questions/10016343/gridlayout-not-gridview-how-to-stretch-all-children-evenly – Sjd

+0

これはPARMSをLinearLayout.LayoutParamsしてみてください= new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT、ViewGroup.LayoutParams.WRAP_CONTENT); b.setLayoutParams(parms); –

答えて

5

を:

View v = inflater.inflate(R.layout.grid_item, null);

vは正しいレイアウトのparamsを持つようにparentViewを渡します。

View v = inflater.inflate(R.layout.grid_item, gl, false);

+0

https://possiblemobile.com/2013/05/layout-inflation-as-intended/ –

+0

元の問題を複製した後、このソリューションを試して空白の画面になりました。 – Tequilaman

1

このお試しください:代わりにヌルを渡す

LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
b.setLayoutParams(parms); 
+0

何も起こらなかった。 –

関連する問題