Estoy desarrollando una aplicación de Android donde la estoy usando RecyclerView
. Necesito agregar un divisor de RecyclerView
. Traté de agregar
recyclerView.addItemDecoration(new
DividerItemDecoration(getActivity(),
DividerItemDecoration.VERTICAL_LIST));
a continuación está mi código xml -
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
/>
android
android-recyclerview
material-design
sofquestion 8
fuente
fuente
Respuestas:
En la actualización de octubre de 2016, la biblioteca de soporte v25.0.0 ahora tiene una implementación predeterminada de divisores horizontales y verticales básicos disponibles.
https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html
fuente
if(parent.getChildAdapterPosition(view) == state.getItemCount() - 1)
luego regrese, de lo contrario llame a la superclase 'getItemOffsets()
.mLayoutManager.getOrientation()
, lo uséDividerItemDecoration.VERTICAL
y funcionó, ya que mi RecyclerView es vertical.@android:attr/listDivider
en el tema de la aplicación no muestra un divisor si es un recurso de color, tuve que crear una forma dibujable con mi color con una altura fija.La forma correcta es definir
ItemDecoration
para elRecyclerView
es el siguienteSimpleDividerItemDecoration.java
line_divider.xml:
Finalmente configúrelo así
Editar
Como señaló @Alan Solitar
se deprecia en lugar de eso puedes usar
fuente
Si desea tener divisores horizontales y verticales:
Definir elementos de dibujo divisores horizontales y verticales:
horizontal_divider.xml
vertical_divider.xml
Agregue este segmento de código a continuación:
fuente
DividerItemDecoration
así:verticalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.VERTICAL);
yhorizontalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.HORIZONTAL);
.Todas estas respuestas me acercaron, pero a cada una le faltaba un detalle clave. Después de un poco de investigación, encontré que la ruta más fácil es una combinación de estos 3 pasos:
Paso 1: mientras configura RecyclerView
Paso 2: en un archivo como res / drawable / divider_gray.xml
Paso 3: en el tema de la aplicación
EDITAR: actualizado para omitir el último divisor:
después de usar esto un poco, me di cuenta de que estaba dibujando un divisor después del último elemento, lo que era molesto. Así que modifiqué el Paso 1 de la siguiente manera para anular ese comportamiento predeterminado en DividerItemDecoration (por supuesto, hacer una clase separada es otra opción):
fuente
for (int i = 0; i < childCount; i++)
cambie afor (int i = 0; i < childCount - 1; i++)
Simplemente agregue una Vista al final de su adaptador de artículo:
fuente
if(position == getItemCount() - 1) { mDividerView.setVisibility(View.INVISIBLE) }
O debe haber otras formas de hacerlo.1px
de altura es invisible para nuestros ojosAquí está el código para un divisor personalizado simple (divisor vertical / 1dp de altura / negro):
Suponga que tiene una biblioteca de soporte:
código java
entonces la muestra del archivo custom_divider.xml:
fuente
Cree un archivo xml separado en la carpeta res / drawable
Conecte ese archivo xml (su_archivo) en la actividad principal , así:
fuente
Versión Kotlin:
fuente
Creo que estás acostumbrado
Fragments
a tenerRecyclerView
Simplemente agregue estas líneas después de crear su
RecyclerView
yLayoutManager
Objetos¡Eso es!
fuente
Prueba este sencillo código de línea única
fuente
Necesita agregar la siguiente línea ...
fuente
La forma en que estoy manejando la vista del divisor y también los separadores del divisor es agregando una extensión RecyclerView.
1)
Agregue un nuevo archivo de extensión nombrando View o RecyclerView:
y agregue el
setDivider
método de extensión dentro del archivo RecyclerViewExtension.kt.2)
Cree un archivo de recursos Drawable dentro del
drawable
paquete comorecycler_view_divider.xml
:donde puede especificar el margen izquierdo y derecho en
android:insetLeft
yandroid:insetRight
.3)
En su Actividad o Fragmento donde se inicializa RecyclerView, puede configurar el dibujo personalizado llamando a:
4)
Saludos 🍺
fuente
Entonces, esta podría no ser la forma correcta, pero acabo de agregar una vista a la vista de un solo elemento de RecyclerView (ya que no creo que haya una función incorporada) así:
Esto significa que cada elemento tendrá una línea que lo llena en su parte inferior. Lo hice aproximadamente 1dp de alto con un
#111111
fondo. Esto también le da una especie de efecto "3D".fuente
Puede crear un divisor reutilizable simple.
Crear divisor:
Crear línea divisoria: divider.xml
Agregue el divisor a su vista Recycler:
Para eliminar el divisor del último elemento:
Para evitar el dibujo del divisor para el último elemento, debe cambiar esta línea.
A
Su implementación final debería ser así:
Espero eso ayude:)
fuente
RecyclerView-FlexibleDivider de yqritc hace que este sea un trazador de líneas. Primero agregue esto a su
build.gradle
:Ahora puede configurar y agregar un divisor donde configure el adaptador de su recyclerView:
fuente
HorizontalDividerItemDecoration
ubicada la clase?Por desgracia, Android solo complica las cosas pequeñas. La forma más fácil de lograr lo que desea, sin implementar DividerItemDecoration aquí:
Agregue el color de fondo al RecyclerView al color del divisor deseado:
Agregue el margen inferior (android: layout_marginBottom) a la raíz de diseño del elemento (list_item.xml):
Esto debería dar espacio de 1dp entre los elementos y el color de fondo de RecyclerView (que es gris oscuro aparecería como divisor).
fuente
Para que la respuesta de NJ sea un poco más simple, puede hacer:
fuente
Simplemente agregue un margen de x cantidad en la parte inferior de un elemento en su
RecycleView Adapter
.onCreateViewHolder
fuente
Donde
0
es horizontal y1
es críticofuente
Solo necesita especificar un color en R.drawable.divider_medium
y agréguelo a su reciclador
referir esto
fuente
La solución Bhuvanesh BS funciona. Versión de Kotlin de esto:
fuente
creo que es la forma más fácil
Tenga en cuenta que: myshape puede ser rectangel con la altura que desea hacer su divisor
fuente