android - studio - recyclerview seleccionar item
La barra de desplazamiento no se muestra en RecyclerView (10)
Tengo un RecyclerView
y me gustaría que se muestre la barra de desplazamiento, cuando cubre más de una página.
No obtengo ninguna barra de desplazamiento en absoluto. ¿Alguna idea?
Mi diseño:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<CheckBox
android:id="@+id/cl_only_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="5dp"
android:text="@string/cl_only_empty"
android:textColor="@color/white" />
<android.support.v7.widget.RecyclerView
android:id="@+id/callsList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
</LinearLayout>
Además del atributo android: scrollbars, debes agregar el atributo android: fadeScrollbars en un estado falso como este:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:fadeScrollbars="false"/>
De esta forma, la barra de desplazamiento vertical siempre se muestra cuando se usa más altura del diseño permitido.
Agregue el código a Recycler view xml para hacer visible la barra de desplazamiento.
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fadeScrollbars="false"
android:scrollbars="vertical"
android:scrollbarSize="@dimen/_2sdp"
android:scrollbarThumbVertical="@color/white"/>
La solución es establecer la barra de desplazamiento vertical (u horizontal) en el diseño xml:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
Prueba esto:
mLayoutManager = new LinearLayoutManager (this);
mLayoutManager.setSmoothScrollbarEnabled (true);
Si puede establecer ScrollBar mediante programación, puede usar ContextThemeWrapper
. Primero necesita definir el estilo en el archivo Style.xml:
<style name="ScrollbarRecyclerView" parent="android:Widget">
<item name="android:scrollbars">vertical</item>
</style>
Y luego aplique el estilo cuando inicialice su RecylerView:
RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));
Tenía el mismo problema en mi viejo HTC Desire X (api 16) solamente.
No sé por qué, pero las scollbars de RecyclerView
no funcionan correctamente en este dispositivo si la propiedad android:background
no está configurada. Intenta configurarlo de cualquier color o transparente; me funciona, espero que te ayude también
Use android: scrollbars atribuye "vertical" y android: scrollbarThumbVertical attribute para establecer el color y android: scrollbarSize attribute para especificar el tamaño:
<android.support.v7.widget.RecyclerView
android:id="@+id/document_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"
android:scrollbars="vertical"
android:scrollbarThumbVertical="@android:color/darker_gray"
android:scrollbarSize="5dp"
android:background="@color/activity_bg"
android:dividerHeight="4dp" />
solo necesito poner el RecyclerView
en un ScrollView
como este:
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="horizontal"
/>
</ScrollView>
use recyclerView como se muestra a continuación en el diseño xml
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:scrollbars="vertical"
android:fadeScrollbars="true"
android:layout_width="match_parent"
android:layout_height="match_parent" />
y agregue el siguiente código para scrollview en java, estará bien
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
recyclerView.setHasFixedSize(true);