2015-11-20 15 views
7

Quando pulsanti aggiunto da XML - Tutto beneallineamento scorretto durante l'aggiunta di vista dinamico per 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> 

pulsanti quando aggiunti dinamicamente (con codice) - Allineamento mancante, pulsanti che non occupano la larghezza completa di una colonna

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

un'occhiata qui .. http://stackoverflow.com/questions/10016343/gridlayout-not-gridview-how-to-stretch-all-children-evenly – Sjd

+0

provare questo LinearLayout.LayoutParams parms = nuovo LinearLayout.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); b.setLayoutParams (parms); –

risposta

5

Invece di passaggio nullo:

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

passare la parentView modo che v ha il params layout corretto.

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

+0

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

+0

Ho duplicato il problema originale, quindi ho provato questa soluzione e ho finito con uno schermo vuoto. – Tequilaman

1

Prova questo:

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

Non è successo nulla. –

Problemi correlati