NestedScrollView no juega con Recyclerview dentro
Tengo un diseño como ese:
<NestedScrollView> <RecyclerView> // vertical recycler view <RecyclerView/> // horizontal recycler view <RecyclerView/> <RecyclerView/> ... <RecyclerView> </NestedScrollView>
El resultado parece Google Play Store:
- Necesita tutoriales AIDL
- LibGDX en la aplicación de compras y Gradle
- La conexión a un dispositivo Bluetooth falla en el sueño profundo
- Android Studio generado APK se bloquea al ejecutar la aplicación en el mismo teléfono funciona bien. ¿Qué está mal?
- Almacene una clave o contraseña de forma segura localmente en android
Y he inhabilitado NestedScrolling en horizontal Recycler
vista:
horizontalRecyclerView.setHasFixedSize(true); horizontalRecyclerView.setNestedScrollingEnabled(false);
Mi problema:
La vista de vertical recyclerview
no se desplaza, siempre que ACTION_UP
sucede, la ACTION_UP
vertical recyclerview
también deja de desplazarse.
¿Cómo puedo anidar vertical recyclerview
dentro de nestedscrollview
, y horizontal recyclerview
dentro de reciclerview vertical recyclerview
como Playstore y mantener el desplazamiento suave.
Resuelto:
Utilizando la vista de desplazamiento anidada personalizada de @vrund purohit (código de abajo), y deshabilitado nestedscroll tanto vertical y horizontal reciclerview:
verticalRecyclerView.setNestedScrollingEnabled(false); ... add each horizontal recyclerviews: horizontalRecyclerView.setNestedScrollingEnabled(false);
- ¿Esto causará fugas de memoria?
- Apache POI insertar imagen
- Sqlite Database - ¿Cómo guardar la imagen tomada de la intención de la cámara, así como hashmap a sqlite para recuperar más tarde?
- ¿Cómo obtener un cuerpo de respuesta para la excepción de actualización?
- Cómo agregar una vista a la parte superior de un diseño lineal en el código?
- La regla de la lechada personalizada no aparece en el estudio de eclipse / android
- Android instanceof detectar todos los widgets?
- Análisis de cadenas de consulta en Android
Tuve este mismo problema y resolví este problema personalizando NeatedScrollView
.
Aquí está la clase para eso.
MyNestedScrollView
public class MyNestedScrollView extends NestedScrollView { @SuppressWarnings("unused") private int slop; @SuppressWarnings("unused") private float mInitialMotionX; @SuppressWarnings("unused") private float mInitialMotionY; public MyNestedScrollView(Context context) { super(context); init(context); } private void init(Context context) { ViewConfiguration config = ViewConfiguration.get(context); slop = config.getScaledEdgeSlop(); } public MyNestedScrollView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public MyNestedScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } private float xDistance, yDistance, lastX, lastY; @SuppressWarnings("unused") @Override public boolean onInterceptTouchEvent(MotionEvent ev) { final float x = ev.getX(); final float y = ev.getY(); switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: xDistance = yDistance = 0f; lastX = ev.getX(); lastY = ev.getY(); // This is very important line that fixes computeScroll(); break; case MotionEvent.ACTION_MOVE: final float curX = ev.getX(); final float curY = ev.getY(); xDistance += Math.abs(curX - lastX); yDistance += Math.abs(curY - lastY); lastX = curX; lastY = curY; if (xDistance > yDistance) { return false; } } return super.onInterceptTouchEvent(ev); } public interface OnScrollChangedListener { void onScrollChanged(NestedScrollView who, int l, int t, int oldl, int oldt); } private OnScrollChangedListener mOnScrollChangedListener; public void setOnScrollChangedListener(OnScrollChangedListener listener) { mOnScrollChangedListener = listener; } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (mOnScrollChangedListener != null) { mOnScrollChangedListener.onScrollChanged(this, l, t, oldl, oldt); } } }
Codificación feliz.
Utilice debajo del código para desplazamiento suave:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
[RESUELVE] Tengo el mismo problema con Recycleview horizontal. Cambiar el repo de Gradle para recycleview
Compile 'com.android.support:recyclerview-v7:23.2.1' Escribe esto: linearLayoutManager.setAutoMeasureEnabled (true);
Corregido errores relacionados con varios métodos de medida-spec en actualización
Compruebe http://developer.android.com/intl/es/tools/support-library/features.html#v7-recyclerview
He encontrado el problema con la biblioteca 23.2.1: Cuando el artículo es match_parent recicle la visión llene el artículo completo para ver, vaya siempre con la altura mínima o "wrap_content".
Gracias
Añadir esto en su RecyclerView xml:
android:nestedScrollingEnabled="false"
He resuelto el problema utilizando el siguiente código:
myRecyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false){ @Override public boolean canScrollHorizontally() { return true; } @Override public boolean canScrollVertically() { return true; } });
- Android: Fragmentos, SQLite y cargadores
- Cómo hacer que phonegap window.location.href no inicie Chrome en Android