Recyclerview con el interior scrollview anidado?
Hay un cambio en el comportamiento natural de onBindViewHolder () Recycler vista debido a desplazamiento anidado, getItemViewType () todos los elementos se llaman dentro onBindViewHolder () cuando se inicia el adaptador de reciclador, Por ejemplo, tengo 20 elementos significa en el escenario normal sólo tres elementos llamados cuando se inician, pero en el caso de la vista de desplazamiento anidado todas las 20 vistas crean en la primera carga.
Archivo Xml
- Recycler view + Ver Pager + Nailed ScrollView + CoordinatorLayout
- Recylerview no visible dentro de scrollview o nestedScrollview
- Emita el desplazamiento WebView en NestedScrollView Android 2.3 o menos
- Ocultar un botón de acción flotante de otro diseño
- Fling suavemente AppBarLayout con NestedScrollView usando AppBarLayout.Behavior
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/light_gray_vd"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentScrim="@color/primaryColor" app:expandedTitleMarginEnd="16dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:layout_collapseMode="parallax"> <include android:id="@+id/inc_gallery" layout="@layout/proj_galery_new" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </FrameLayout> <View android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar1" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_gravity="top" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <include android:id="@+id/toolbar_header_view" layout="@layout/header_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" /> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/vde_mv_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <FrameLayout android:id="@+id/rlCollapseScroll" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/view_recycler" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.v7.widget.RecyclerView> </FrameLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>
- No se desplaza Android Scrollview anidada
- NestedScrollView no se desplazará hasta el final cuando se utiliza con CollapsingToolbarLayout
- Android - CoordinatorLayout / NestedScrollView / Hide-Show Toolbar / Problema con WebView
- NestedScrollview no comenzará desde arriba
- NestedScrollView y Horizontal RecyclerView Smooth Scrolling
- Match_parent no funciona para ListView, si ListView está dentro de NestedScrollView
- NestedScrollView y WebView
- La vista Recyclerview no funciona con setNestedScrollingEnabled y nunca recicla ninguna vista
Quitar NestedScrollView
y frameLayout
y establecer la app:layout_behavior="@string/appbar_scrolling_view_behavior"
para recycleView
como este:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/light_gray_vd"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentScrim="@color/primaryColor" app:expandedTitleMarginEnd="16dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:layout_collapseMode="parallax"> <include android:id="@+id/inc_gallery" layout="@layout/proj_galery_new" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </FrameLayout> <View android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar1" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_gravity="top" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <include android:id="@+id/toolbar_header_view" layout="@layout/header_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" /> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/view_recycler" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:scrollbars="vertical"> </android.support.v7.widget.RecyclerView> </android.support.design.widget.CoordinatorLayout>
El problema es tanto Recyclerview
como NestedScrollview
son desplazables. Al eliminar uno, debe ser capaz de lograr el efecto que quería.
Por lo tanto, intente usar sólo Recyclerview
sin ponerlo en NestedScrollView
. Me gusta esto :
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/light_gray_vd" > <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" > <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentScrim="@color/primaryColor" app:expandedTitleMarginEnd="16dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed" > <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:layout_collapseMode="parallax" > <include android:id="@+id/inc_gallery" layout="@layout/proj_galery_new" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </FrameLayout> <View android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar1" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_gravity="top" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" > <include android:id="@+id/toolbar_header_view" layout="@layout/header_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" /> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/view_recycler" android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.design.widget.CoordinatorLayout>
También puede hacer referencia a este ejemplo o leer este artículo de la ruta de código acerca de cómo manejar scroll con CoordinatorLayout
CheeseSquare de Chris Bane también tiene un buen ejemplo de CoordinatorLayout
También tuve el mismo problema después de la actualización de Android Support Library 23.2.0.
Establezca el android:layout_height
RecyclerView
android:layout_height
para match_parent
.
Y deshabilite la nueva función de automeasure ( lea más ):
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false); layoutManager.setAutoMeasureEnabled(false); recyclerView.setLayoutManager(layoutManager);
- Soporte de Emoji para iOS y Android
- Cómo obtener la fecha de caducidad de la suscripción de Google Play desde el servidor backend