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)