GridLayout (pas GridView) – Espaces entre les cellules
J'utilise GridLayout
(support) pour afficher ImageView
s dans ma application. Il y a 3 colonnes et 5 lignes. Le problème est que les cellules du GridLayout
automatiquement un espace entre elles. Je ne définis aucun rembourrage ou marge pour les cellules. Veuillez vous référer à l'image ci-dessous. Toutes les cellules sont ajoutées dynamiquement et voici comment j'ajoute ces cellules.
Obtenir l'écran Largeur et Hauteur:
Point size = new Point(); getWindowManager().getDefaultDisplay().getSize(size); screenWidth = size.x; screenHeight = size.y; rowHeight = (int) (screenHeight * 0.2);
Ajouter une vue à GridLayout:
GridLayout.LayoutParams params = new GridLayout.LayoutParams( getSpec(rowColumn[0]), getSpec(rowColumn[1])); params.height = rowHeight; if (rowColumn[1].equalsIgnoreCase("col_full")) { params.width = (int) (screenWidth); } else if (rowColumn[1].equalsIgnoreCase("col_two_part")) { params.width = (int) (screenWidth * 0.6); } else { params.width = (int) (screenWidth * 0.3); } ImageButton image = (ImageButton) imageHashMap .get(reOrderedButtonsListCopy.get(i)); image.setLayoutParams(params); gridLayout.addView(image, params);
Mise en page XML:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.xx.xxx" android:id="@+id/scrollView1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <android.support.v7.widget.GridLayout xmlns:app="http://schemas.android.com/apk/res/com.xx.xxx" android:id="@+id/gridlayout_main" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="2dp" app:columnCount="3" app:rowCount="5" > </android.support.v7.widget.GridLayout> </LinearLayout> </ScrollView>
Résultat courant:
Les lignes rouges montrent les espaces entre les cellules. En outre, il existe un espace sur le côté gauche de GridLayout. Je n'ai donné que layout_margin
comme layout_margin
. Des raisons pour lesquelles ce rembourrage a lieu?
[MODIFIER]
Les modifications suivantes ont supprimé les espacements.
gridLayout = (GridLayout) findViewById(R.id.gridlayout_main); gridLayout.setUseDefaultMargins(false); gridLayout.setAlignmentMode(GridLayout.ALIGN_BOUNDS); gridLayout.setRowOrderPreserved(false);
Reportez-vous à l'image ci-dessous.
One Solution collect form web for “GridLayout (pas GridView) – Espaces entre les cellules”
Trouvé la solution.
Les modifications suivantes ont supprimé les espacements.
gridLayout = (GridLayout) findViewById(R.id.gridlayout_main); gridLayout.setUseDefaultMargins(false); gridLayout.setAlignmentMode(GridLayout.ALIGN_BOUNDS); gridLayout.setRowOrderPreserved(false);
Reportez-vous à l'image ci-dessous.