Existe-t-il un moyen d'afficher des séparateurs (horizontaux) entre les lignes dans une vue en grille?
J'ai essayé de mettre une petite image de séparation sous chaque élément de la grille, mais ce n'est pas une solution, car elle ne s'étendra pas sur toute la ligne lorsqu'une ligne n'est pas complètement remplie d'éléments.
Existe-t-il un moyen d'ajouter simplement une image entre chaque ligne? Je ne peux trouver que des méthodes pour changer l'espace entre les lignes.
J'ai fini par créer une vue de grille personnalisée, quelque chose comme ceci:
https://stackoverflow.com/a/9757501/131034
en utilisant une image d'arrière-plan qui est exactement aussi haute qu'un élément dans ma vue de grille, et a un devider en bas.
Fonctionne comme un charme!
Si vous utilisez une disposition personnalisée pour les éléments de la grille. Le code ci-dessous fonctionnera.
Cela va servir de diviseur.
Donnez horizontalSpacing
et verticalSpacing
comme 1dp
backgroundColor sera la couleur de votre séparateur.
<GridView
Android:id="@+id/gridView1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="#e5e5e5"
Android:horizontalSpacing="1dp"
Android:numColumns="auto_fit"
Android:stretchMode="columnWidth"
Android:verticalSpacing="1dp" >
Cela va servir de couleur de premier plan pour GridItems.
Dans mon cas, je l'ai gardé blanc (#fff)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:gravity="center"
Android:background="#fff"
Android:padding="15dp"
>
<ImageView
Android:id="@+id/icon"
Android:layout_width="50dp"
Android:layout_height="50dp"
Android:src="@drawable/ic_launcher_transparent" />
<TextView
Android:id="@+id/lable"
Android:layout_marginTop="5dp"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Medium Text"
Android:textStyle="bold"
Android:textColor="#D0583B"
Android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
Remarque:
Si vous ne voulez pas de séparateur vertical, conservez horizontalSpacing = 0dp
Si vous ne voulez pas de séparateur horizontal, gardez verticalSpacing = 0dp
Je voulais juste partager comment j'ai implémenté cela en utilisant le lien accepté par OP. Pour mon cas, j'avais également besoin de contrôler la longueur des séparateurs, donc je ne pouvais pas contourner le sous-classement GridView
.
public class HorizontalSeparatorGridView extends GridView {
// Additional methods
@Override
protected void dispatchDraw(Canvas canvas) {
final int count = getChildCount();
for(int i = 0; i < count; i++) {
View child = getChildAt(i);
int bottom = child.getBottom();
int left = child.getLeft();
int right = child.getRight();
Paint paint = new Paint();
Paint.setColor(0xffececec);
Paint.setStrokeWidth(Math.round(0.5 * density));
int offset = // Some offset
canvas.drawLine(left + offset, bottom, right - offset, bottom, Paint);
}
super.dispatchDraw(canvas);
}
J'ai sous-classé dispatchDraw
par opposition à onDraw
juste pour être sûr, mais je ne pense pas que cela importerait dans ce cas.
Je suggère de faire ce qui suit:
"
<TableRow
Android:id="@+id/tableRow1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="1sp"
Android:layout_marginLeft="7sp"
Android:layout_marginRight="7sp"
Android:layout_marginTop="7sp"
Android:background="@Android:color/transparent">
<TextView
Android:id="@+id/lblDeposit"
Android:layout_width="60sp"
Android:layout_height="40sp"
Android:layout_gravity="center_vertical"
Android:layout_marginLeft="0sp"
Android:background="@drawable/rounded_top_left_rectangle"
Android:gravity="center"
Android:paddingLeft="5sp"
Android:scaleType="fitXY"
Android:text="Deposit"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="#000">
</TextView>
<TextView
Android:id="@+id/lblDepositvalue"
Android:layout_width="50sp"
Android:layout_height="40sp"
Android:layout_gravity="center_vertical"
Android:layout_marginLeft="2sp"
Android:layout_marginRight="13sp"
Android:background="@drawable/rounded_top_right_rectangle"
Android:gravity="center_vertical|center_horizontal"
Android:scaleType="fitXY"
Android:text="40000/-Rs"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="#000">
</TextView>
</TableRow>
<TableRow
Android:id="@+id/tableRow2"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="6sp"
Android:layout_marginLeft="7sp"
Android:layout_marginRight="7sp"
Android:layout_marginTop="2sp"
Android:background="@Android:color/transparent">
<TextView
Android:id="@+id/lblPoints"
Android:layout_width="60sp"
Android:layout_height="40sp"
Android:layout_gravity="center_vertical"
Android:layout_marginLeft="0sp"
Android:background="@drawable/rounded_bottom_right_rectangle"
Android:gravity="center"
Android:paddingLeft="5sp"
Android:scaleType="fitXY"
Android:text="Points "
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="#000">
</TextView>
<TextView
Android:id="@+id/lblPointsValue"
Android:layout_width="50sp"
Android:layout_height="40sp"
Android:layout_gravity="center_vertical"
Android:layout_marginLeft="2sp"
Android:layout_marginRight="13sp"
Android:background="@drawable/rounded_bottom_left_rectangle"
Android:gravity="center_vertical|center_horizontal"
Android:scaleType="fitXY"
Android:text="20"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="#000">
</TextView>
</TableRow>
</TableLayout>`