Divisores / separadores de filas android gridview
¿Existe una manera de mostrar divisores (horizontales) entre filas en una vista de cuadrícula?
Intenté poner una pequeña imagen divisora debajo de cada elemento de la cuadrícula, pero esto no es una solución, ya que no abarcará toda la fila cuando una fila no esté completamente llena de elementos.
- Ejemplo simple de red de Android con RecyclerView con GridLayoutManager (como el GridView antiguo)
- El clic de GridView no funciona dentro de la vista de lista personalizada
- Animación gridview de Android (ordenar) la lista al eliminar o agregar
- GridView altura de la fila
- Creación de Gridview con imágenes seleccionables, Android
¿Hay alguna manera de agregar una imagen entre cada fila? Sólo puedo encontrar métodos para cambiar el espacio entre filas.
- Actualización de la vista de cuadrícula dinámicamente cuando se elimina un elemento (archivo)
- Android: Tire para actualizar para GridView
- Android: rejilla del centro horizontalmente
- Vista de cuadrícula personalizada
- Android MGBox2 biblioteca equivalente?
- Cómo tener un GridView que adapte su altura cuando se agregan elementos
- Inicie los Elementos GridView desde la derecha
- Android gridview OnItemClickListener
Si está utilizando un diseño personalizado para elementos de cuadrícula. Debajo del código funcionará.
Paso 1: Dar color de fondo a GridView
Esto va a servir como un divisor.
Dale horizontalSpacing
y verticalSpacing
como 1dp
BackgroundColor será su 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 a la disposición de elementos de cuadrícula personalizada
Esto va a servir como un color de primer plano para GridItems.
En mi caso lo mantuve 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 separador vertical, mantenga horizontalSpacing = 0dp
Si no desea separador horizontal, mantenga verticalSpacing = 0dp
Terminé creando un gridview personalizado, algo como esto:
https://stackoverflow.com/a/9757501/1310343
Utilizando una imagen de fondo que es exactamente tan alta como un elemento en mi gridview, y tiene un devider en la parte inferior.
¡Funciona de maravilla!
Sólo 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 podía obtener alrededor de subclase 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); }
Subclase a dispatchDraw
en contraposición a onDraw
sólo para ser 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>`
- Android: onSaveInstanceState no se llama desde la actividad
- Posicionamiento de elementos de menú a la izquierda de la barra ActionBar en Honeycomb