Android Comment étirer des lignes dans la vue grid pour remplir l'écran?

J'ai un GridView simple (avec une colonne et six lignes), qui affiche ImageView avec TextView dans la cellule (je crée un adaptateur). Comment étirer des lignes pour remplir la hauteur totale de l'écran? Maintenant, j'ai de l'espace sous les cellules …

Main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal"> <LinearLayout android:layout_height="fill_parent" android:layout_width="150dp" android:orientation="vertical" android:id="@+id/left"> <include layout="@layout/menu_grid"></include> </LinearLayout> <LinearLayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" android:id="@+id/right"> <ImageView android:src="@drawable/image" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/imageMain" android:layout_gravity="center"> </ImageView> </LinearLayout> 

Menu_grid.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <GridView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/gridView" android:padding="10dp" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:numColumns="1" android:columnWidth="100dp" android:stretchMode="columnWidth" android:gravity="center"></GridView> 

Item.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="fill_horizontal"> <ImageView android:src="@drawable/icon" android:layout_height="70dp" android:id="@+id/imageIcon" android:layout_width="70dp" android:layout_gravity="center_horizontal"></ImageView> <TextView android:id="@+id/textIcon" android:text="TextView" android:layout_gravity="center" android:layout_height="wrap_content" android:layout_width="wrap_content"></TextView> 

ImageAdapter.java

 public class ImageAdapter extends BaseAdapter { //....some code //.... @Override public View getView(int position, View convertView, ViewGroup parent) { View view; if (convertView == null) { LayoutInflater inflater = (LayoutInflater)_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.item, null); TextView text = (TextView) view.findViewById(R.id.textIcon); text.setText(labels[position]); ImageView image = (ImageView) view.findViewById(R.id.imageIcon); image.setImageResource(icons[position]); } else { view = convertView; } return view; } 

}

  • Effet ondulé sur l'image - Android
  • GridView.setOnItemClickListener ne fonctionne pas
  • Picasso "Redimensionner et centrer" ou "CentreCrop" ImageView?
  • GridView hauteur de rangée
  • La vue de la grille Android place les objets de droite à gauche
  • Création de Gridview ayant des images cliquables, Android
  • Lazy télécharge les images en gridView
  • Gridview multiline Textview coupé
  • 3 Solutions collect form web for “Android Comment étirer des lignes dans la vue grid pour remplir l'écran?”

    À partir de ce que j'ai compris, la question est – si j'ai 6 lignes de données à remplir dans gridView, comment puis-je faire ces 6 lignes remplir l'écran entier, au lieu de montrer 6 lignes et un espace vide sous la dernière ligne.

    Pour ce faire, vous devez définir la hauteur minimale de la disposition de l'élément gridView (dans votre cas, item.xml) à (hauteur de l'écran) / 6, où 6 est le (nombre de lignes que vous devez remplir). Cette hauteur minimale peut être définie dans l'adaptateur que vous utilisez.

    Pour trouver la hauteur de l'écran de l'appareil:

     DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int width = metrics.widthPixels; int height = metrics.heightPixels; 

    Trouve ces valeurs dans l'activité et les rend publiques en statique et les utilise dans l'adaptateur, j'ai eu un problème pour trouver ces valeurs dans la classe d'adaptateur

    Puis définir la hauteur minimale:

     view = inflater.inflate(R.layout.item, null); view.setMinimumHeight(GridViewActivity.height/6); 

    J'ai essayé cela après avoir vu le message, et ça a fonctionné parfaitement.

    Si vous souhaitez simplement augmenter l'espace entre les lignes, vous pouvez utiliser le rembourrage, il devrait fonctionner. Vous pouvez définir le rembourrage via xml ou par programmation selon vos besoins.

     // this you can set inside your view. android:paddingLeft="5px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" // this you can set to your any widgets like TextView/Layouts/Buttons etc.. setPadding(top, left, bottom, right); 

    J'espère que je vous comprends bien, si tel est qu'il est aussi simple que de changer votre GridView pour fill_parent instead de wrap_content .

    Changement

     <GridView android:layout_height="wrap_content" 

    à

     <GridView android:layout_height="fill_parent" 

    Si ce n'est pas le cas, c'est probablement la hauteur de mise en page sur LinearLayout de l'item.xml que vous souhaitez modifier.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.