scrolling recyclerview not inside ejemplo android android-recyclerview nestedscrollview

android - not - NestedScrollView se desplaza hacia arriba en Recyclerview redimensionado



scroll recyclerview (4)

En mi caso, uso múltiples RecyclerView dentro de NestedScrollView. Entonces no me funciona. Así que mi solución es, cuando mi actualización de datos se complete, simplemente me desplazo hacia arriba

yourList.setAdapter(yourListAdapter); scrollView.post(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_UP); //scrollView.scrollTo(0,0); } });

Tengo un NestedScrollView que contiene un LinearLayout y un RecyclerView (ambos dentro de un RelativeLayout).

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/scroll"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lay_account"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/white" android:paddingTop="10dp" android:id="@+id/lay_total" android:paddingBottom="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/total" android:id="@+id/lblTotal" android:textSize="@dimen/text_medium" android:layout_marginLeft="20dp" android:textColor="@color/dark_eurakostheme_color" android:textStyle="bold"/> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical|center_horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/txtTotalAmount" android:textSize="@dimen/text_extra_extra_large" android:gravity="center_horizontal" android:textColor="@color/eurakostheme_color"/> <ImageView android:layout_width="@dimen/icon_extra_extra_large" android:layout_height="match_parent" android:id="@+id/imageView3" android:src="@drawable/coin_eurakos"/> </LinearLayout> </LinearLayout> <View android:layout_width="fill_parent" android:layout_height="1dp" android:id="@+id/divisor" android:background="@color/dividerColor" android:layout_alignBottom="@+id/lay_total"/> <android.support.v7.widget.RecyclerView android:layout_below="@id/lay_total" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/rclBasketAmounts" android:background="@android:color/white" android:padding="10dp"> </android.support.v7.widget.RecyclerView> </RelativeLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>

Después de cargar los datos en RecyclerView, necesito cambiar su altura programáticamente de esta manera:

RelativeLayout.LayoutParams lay_params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 50 + ((int) (baskets.length * getResources().getDimension(R.dimen.list_height_small)))); lay_params.addRule(RelativeLayout.BELOW, lay_total.getId()); recyclerView.setLayoutParams(lay_params); recyclerView.setAdapter(new ListBasketAmountAdapter(baskets));

El problema es que cuando los datos han terminado de cargar los desplazamientos de NestedScrollView, se desplaza automáticamente a la parte superior de RecyclerView, ocultando el LinearLayout sobre él. ¿Algunas ideas?

Gracias.


Después de varios días he encontrado una solución al problema. Solo necesita agregar la ScrollView descendantFocusability en el primer diseño debajo de ScrollView esta manera:

<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lay_account" android:descendantFocusability="blocksDescendants">


La solución dada por kevings14 funciona pero no fue útil en mi caso. Tengo un RecyclerView + un par de EditText bajo NestedScrollView , cuando agregué

android:descendantFocusability="blocksDescendants"

en el diseño principal en la vista de desplazamiento. No EditText enfocar EditText .

Entonces se me ocurrió esta solución, que funcionó para mí.

<RelativeLayout android:layout_width="match_parent" android:focusable="true" android:focusableInTouchMode="true" android:layout_height="wrap_content">


<android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="true" android:focusableInTouchMode="true" > <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> </android.support.v4.widget.NestedScrollView>