Comment définir la bordure de GridView.
Comme Divider et DividerHeight of ListView.
.__ Ou comment afficher la bordure.
Voici quelques exemples de bordures dans un GridView.
Vous pouvez voir où j'ai défini les bordures rouge et bleue dans mon XML.
Ceci est ma mise en page main.xml:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/root"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/red" >
<GridView
Android:id="@+id/gridview"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:layout_margin="10dp"
Android:background="@color/blue"
Android:columnWidth="90dp"
Android:gravity="center"
Android:horizontalSpacing="10dp"
Android:numColumns="auto_fit"
Android:stretchMode="columnWidth"
Android:verticalSpacing="10dp"
/>
</RelativeLayout>
L'épaisseur de la bordure rouge est contrôlée par l'attribut layout_margin
de GridView et les bordures bleues sont contrôlées par horizontalSpacing
et verticalSpacing
.
Pour créer les arrière-plans des cellules noires, j’ai utilisé cette présentation et l’ai enregistrée sous le nom list_item.xml:
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@Android:id/text1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@Android:color/black"
Android:gravity="center_vertical"
Android:minHeight="?android:attr/listPreferredItemHeight"
Android:paddingLeft="6dip"
Android:textAppearance="?android:attr/textAppearanceLarge" />
Mon activité:
public class Example extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] array = new String[] {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
List<String> list = new ArrayList<String>(Arrays.asList(array));
GridView grid = (GridView) findViewById(R.id.gridview);
grid.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, list));
}
}
utilisez le fichier XML ci-dessous comme arrière-plan dans le fichier XML d'élément de grille.
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="@Android:color/transparent" />
<corners
Android:bottomRightRadius="12dp"
Android:bottomLeftRadius="12dp"
Android:topLeftRadius="12dp"
Android:topRightRadius="12dp" />
<stroke
Android:color="@Android:color/white"
Android:width="1dp" />
</shape>
Créez grid_row_border.xml dans le dossier res/drawable.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="@Android:color/transparent" />
<corners
Android:bottomRightRadius="5dp"
Android:bottomLeftRadius="5dp"
Android:topLeftRadius="5dp"
Android:topRightRadius="5dp" />
<stroke
Android:color="@color/material_grey_600"
Android:width="1dp" />
</shape>
Maintenant, utilisez ceci dans votre grille XML comme ci-dessous
Android:background="@drawable/grid_row_border"
Fournissez un rembourrage [Android: padding = "5dp"] et une marge [Android: layout_margin = "5dp"] pour une meilleure apparence.
J'ajoute ces vues autour de l'image de ma galerie dans la ligne d'image xml:
<View
Android:layout_width="@dimen/listGalleryItemWidthLarge"
Android:layout_height="2dip"
Android:layout_above="@+id/gallery_row_iv"
Android:layout_centerHorizontal="true"
Android:background="#FFFFFF" />
<View
Android:layout_width="@dimen/listGalleryItemWidthLarge"
Android:layout_height="2dip"
Android:layout_below="@+id/gallery_row_iv"
Android:layout_centerHorizontal="true"
Android:background="#FFFFFF" />
<View
Android:layout_width="2dip"
Android:layout_height="@dimen/listGalleryItemHeightLarge"
Android:layout_centerVertical="true"
Android:layout_toRightOf="@+id/gallery_row_iv"
Android:background="#FFFFFF" />
<View
Android:layout_width="2dip"
Android:layout_height="@dimen/listGalleryItemHeightLarge"
Android:layout_centerVertical="true"
Android:layout_toLeftOf="@+id/gallery_row_iv"
Android:background="#FFFFFF" />