J'aimerais connaître la manière la plus simple de tracer des séparateurs entre les éléments (actuellement des vues de texte) dans une GridView. La seule façon dont je peux penser est de tracer des bordures autour de ces vues de texte, ainsi, lorsqu'elles sont combinées, elles ressemblent à des séparateurs horizontaux et verticaux continus.
Il existe un setDivider () pour les vues de liste mais pas les vues de grille?
Merci.
Malheureusement, après avoir regardé le code source, je ne voyais pas de moyen facile d'ajouter des bordures autre que d'adopter l'ajout de bordures à chaque cellule. Pour référence, je posterai ma solution ici.
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="horizontal"
Android:background="@drawable/list_selector">
<!-- Cell contents -->
</LinearLayout>
list_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:state_selected="true"
Android:drawable="@drawable/item_border_selected"
/>
<item
Android:state_pressed="true"
Android:drawable="@drawable/item_border_selected"
/>
<item
Android:drawable="@drawable/item_border"
/>
</selector>
item_border.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid
Android:color="@Android:color/transparent"
/>
<stroke
Android:width="1px"
Android:color="@color/list_divider"
/>
</shape>
item_border_selected.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid
Android:color="@color/list_select"
/>
<stroke
Android:width="1px"
Android:color="@color/list_divider"
/>
</shape>
items_view.xml
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:layout_marginLeft="-1px"
Android:layout_marginRight="-1px"
Android:listSelector="@Android:color/transparent"
/>
Étant donné que toutes les lignes doublent de taille lorsqu'elles rejoignent leurs cellules voisines, j'ai fait la taille du diviseur 1px au lieu de 1dp afin qu'il n'apparaisse pas trop grand sur certains écrans. De plus, j'ai fait en sorte que la vue de la grille ait des marges négatives pour masquer les lignes de chaque côté. J'espère que ça aidera quelqu'un.
Dans le cas où vous souhaitez simplement des lignes simples comme bordures, il est beaucoup plus simple de définir une couleur d'arrière-plan pour un GridView
et un remplissage et un espacement appropriés:
<GridView
(...)
Android:background="@color/LightGold"
Android:listSelector="@Android:color/transparent"
Android:horizontalSpacing="1dip"
Android:verticalSpacing="1dip"
Android:paddingLeft="1dip"
Android:paddingTop="1dip" />