ItemTouchHelper hace que el elemento arrastrado pase el fragmento de pie de página

Tengo un RecyclerView con un ItemTouchHelper . El RecyclerView es una cuadrícula 2/2 y tiene un encabezado y pie de página en la página. Cuando el usuario recoge un elemento quiero que el elemento sea capaz de colocar el cursor sobre el pie de página. Sin embargo, no quiero que los otros elementos en la vista del reciclador puedan ser vistos a través del pie de página.

Así que primero traté de agregar clipChildren y clipPadding pero que creó una situación en la que los elementos de RecyclerView se desplazan a través del pie de página que era un problema. Intenté agregar la elevación al artículo y bringToFont pero ésos nunca trabajaron porque la opinión del reciclador estaba todavía detrás del pie de página, intenté agregar traer al frente a la opinión del reciclar sí mismo pero entonces una vez más todos los artículos se convierten en frente del pie de nuevo en vez de Sólo el arrastrado, ¿alguien tiene alguna otra idea sobre cómo resolver esto?

Comenzaría por asegurarse de que su vista de reciclador tenga android:clipChildren="false" . De esta manera no deberías necesitar que el punto de vista del reciclaje sea literalmente superpuesto por el pie de página – puede terminar encima del pie de página y todavía permitir que los niños dibujen fuera de los límites.

Si tiene un pie de página estático puede intentar llamar a bringToFront cuando determine que el eje y se ha movido lo suficiente para que el elemento actual cruce el pie de página. Luego, cuando se mueva hacia atrás fuera del rango o cuando el scroll de reciclerview en absoluto, traiga el pie de página a la parte delantera. Sin embargo, esto sería particularmente propenso a errores; Un poco de un hack.

Editar:

Un enfoque diferente sería cortar completamente la conexión entre un elemento arrastrado y la vista de reciclaje (esto requerirá un poco de trabajo en la parte de la gota), los pasos serían aproximadamente:

 - Start dragging item i - store a reference to i.getParent() and the view index within its parent - i.getParent().removeView(i) //detach the item from the recycler (or create clone) - layout.addView(i) //add item onto main layout containing footer, allowing overlap - when dropped, use the parent reference and index to reattach the item - then work out where the item was released 

Sugerencia, en mi TouchHelperCallback personalizado que sobrescribió el método onMove y ignoró comprobar si las fuentes de las variables y el tipo son los mismos. Así que cuando estaba arrastrando el artículo sobre el encabezado, podría poner el elemento sobre él.

 @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { //if (source.getItemViewType() != target.getItemViewType()) { // return false; //} // Notify the adapter of the move mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition()); return true; } 

Tutorial no modificado sobre la caída de arrastre Tomé de: https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.jl59rui0l

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.