scrolling recyclerview not inside fillviewport entre diferencia android android-recyclerview scrollview

android - not - scroll recyclerview



¿Cómo eliminar el foco de RecyclerView dentro de ScrollView? (3)

Tengo una vista de desplazamiento que contiene un ImageView y RecyclerView. si el cajón de navegación se abrió, entonces cerró el RecyclerView auto desplazamiento hacia arriba, ¿Cómo detener esto?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/scrollViewMain" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView_main_icons_line" android:src="@drawable/main_line" /> ... <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView_activity_main_passenger_log" android:paddingBottom="2dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </ScrollView> </RelativeLayout>


Echa un vistazo a clearFocus () desde aquí Android Dev Doc.

Puede establecer un DrawerListener en su panel de navegación y usar onDrawerStateChanged () o alguna de las otras opciones desde aquí para llamar a clearFocus () en su RecyclerView .


Este problema debido a recyclerView tiene un enfoque predeterminado.

Solución

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:descendantFocusability="blocksDescendants" android:orientation="vertical">

Agregue android:descendantFocusability="blocksDescendants" a su diseño inmediato de scrollView


Eso es porque RecyclerView SIEMPRE establece:

setFocusableInTouchMode(true);

esto está codificado en su constructor.

así que si aplicas esos atributos en tu XML para un RecyclerView

android:focusable="false" android:focudeableInTouchMode="false"

eso sería inútil, terminas con recycleView.isFocusable () == true ...

así que la solución más elegante es desactivar foucusable para RecyclerView''s Parent.

<LinearLayout android:focusable="false" android:focusableInTouchMode="false" android:descendantFocusability="blocksDescendants" ... > <android.support.v7.widget.RecyclerView ... /> />

o simplemente puede configurarFocusable (falso)