2016-07-11 1 views
2

Je souhaite que la disposition de la grille couvre tout l'écran et que je souhaite le faire par programmation. Quand je le fais en XML statique en ajoutant l'attribut app:layout_columnWeight, il ressemble exactement que je veux avoir comme suit:Android GridLayout- couvrir l'intégralité de l'écran par programme

With xml

Mais quand j'essayé de créer même mise en page par programmation, il ressemble à ceci:

programmatically

Je veux que ce soit identique à la première image. Voici mon code:

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    android.support.v7.widget.GridLayout gridLayout = new android.support.v7.widget.GridLayout(this); 
    gridLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
    gridLayout.setColumnCount(3); 
    for (int i = 0; i < 9; i++) { 
     Button button = new Button(MainActivity.this); 
     GridLayout.LayoutParams lp = (GridLayout.LayoutParams) button.getLayoutParams(); 

     if (lp == null) { 
      lp = new GridLayout.LayoutParams(); 
     } 
     lp.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1f); 
     button.setLayoutParams(lp); 
     button.setText("Button " + (i + 1)); 
     gridLayout.addView(button); 
    } 
    LinearLayout linearLayout = new LinearLayout(this); 
    linearLayout.addView(gridLayout); 
    setContentView(linearLayout); 
} 
} 

Aidez-moi s'il vous plaît. Remarque- J'utilise min sdk comme 21.

Update- Voici mon code xml

<LinearLayout 

xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.v7.widget.GridLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:columnCount="3"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 1" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 2" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 3" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 4" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 5" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 6" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 7" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 8" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_columnWeight="1" 
     app:layout_gravity="fill" 
     android:text="Button 9" /> 
</android.support.v7.widget.GridLayout> 
</LinearLayout> 
+0

Montrez votre mise en page sont code.You Si vous n'utilisez pas gridlayout de votre mise en page, vous créez un autre gridlayout par programmation. – Drv

+0

Mise à jour à la question –

+0

Je souhaite créer une mise en page entière écrite en XML par programmation. –

Répondre

-1

Remplacez votre activité avec:

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.YOUR_LAYOUT_NAME); 

} 
} 
+0

La mise en page que j'ai créée en utilisant xml fonctionne bien. J'ai utilisé le même code que celui que vous avez posté ici. Mais je veux créer la même mise en page par programme et je veux de l'aide pour cela. –

+0

Ok ok je l'ai eu. – Drv