propiedades - menu gridview android
separadores/separadores de fila gridview android (4)
¿Hay alguna manera de mostrar divisores (horizontales) entre filas en una vista de cuadrícula?
Traté de poner una pequeña imagen divisoria debajo de cada elemento de la cuadrícula, pero esta no es una solución, porque no abarcará toda la fila cuando una fila no está completamente llena de elementos.
¿Hay alguna manera de simplemente agregar una imagen entre cada fila? Solo puedo encontrar métodos para cambiar el espacio entre filas.
Si está utilizando un diseño personalizado para los elementos de la grilla. El siguiente código funcionará.
Paso 1: Dale color de fondo a GridView
Esto va a servir como un divisor.
Give horizontalSpacing
y verticalSpacing
como 1dp
backgroundColor será tu color divisor.
<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" >
Paso 2: Dar color de fondo al diseño de elementos de cuadrícula personalizados
Esto servirá como color de primer plano para GridItems.
En mi caso lo mantuve en blanco (#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>
Resultado
Nota:
Si no desea el separador vertical, mantenga horizontalSpacing = 0dp
Si no desea el separador horizontal, mantenga verticalSpacing = 0dp
Solo quería compartir cómo implementé esto usando el enlace aceptado por OP. Para mi caso, también necesitaba controlar la longitud de los separadores, por lo que no pude evitar la subclasificación de 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);
}
onDraw
dispatchDraw
en lugar de onDraw
solo para estar seguro, pero no creo que importaría en este caso.
Sugiero hacer lo siguiente:
`
<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>`
Terminé creando una vista de cuadrícula personalizada, algo como esto:
https://.com/a/9757501/1310343
usando una imagen de fondo que es exactamente tan alta como un elemento en mi vista de cuadrícula, y tiene un proveedor en la parte inferior.
¡Funciona de maravilla!