2015-11-20 36 views
7

Po dodaniu przycisków przez XML - Wszystkie dobreWyrównanie nie tuż przy dodawaniu widok dynamicznie 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> 

po dodaniu Przyciski dynamicznie (Wg kodu) - Wyrównanie brakuje, przyciski nie zajmuje całej szerokości kolumny

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

spójrz tutaj .. http://stackoverflow.com/questions/10016343/gridlayout-not-gridview-how-to-stretch-all-children-evenly – Sjd

+0

spróbować LinearLayout.LayoutParams PARMS = new LinearLayout.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); b.setLayoutParams (parms); –

Odpowiedz

5

Zamiast mijania zerową:

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

zdać parentView tak, że v ma prawidłowe params układu.

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

+0

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

+0

Powieliłem pierwotny problem, a następnie wypróbowałem to rozwiązanie i skończyło się pustym ekranem. – Tequilaman

1

Spróbuj tego:

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

Nic się nie stało. –