Полоса прокрутки, не отображаемая в RecyclerView
У меня есть RecyclerView
и вы хотите иметь полосу прокрутки, когда она охватывает более одной страницы.
У меня нет полосы прокрутки. Любая идея?
Мой макет:
<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>
Ответы
Ответ 1
Решение состоит в том, чтобы установить вертикальную (или горизонтальную) полосу прокрутки в макете xml:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
Ответ 2
Используйте андроид: атрибут прокрутки "вертикальный" и андроид: scrollbarThumbVertical для установки цвета и андроида: атрибут scrollbarSize для указания размера:
<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" />
Ответ 3
используйте recyclerView, как показано ниже, в макете 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" />
и добавьте ниже код для scrollview в java, это будет нормально
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
recyclerView.setHasFixedSize(true);
Ответ 4
Вы можете использовать от:
setScrollbarFadingEnabled(boolean)
Ссылка полосы прокрутки
Ответ 5
Попробуйте следующее:
mLayoutManager = new LinearLayoutManager (this);
mLayoutManager.setSmoothScrollbarEnabled (true);
Ответ 6
У меня была такая же проблема на моем старом HTC Desire X (api 16).
Я не знаю, почему, но scollbars RecyclerView
не работает должным образом на этом устройстве, если свойство android:background
не установлено. Постарайтесь установить его на любой цвет или на прозрачный - он работает для меня, надеюсь, он тоже поможет вам.
Ответ 7
Помимо атрибута android: scrollbars, вы должны добавить атрибут android: fadeScrollbars в false, например:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:fadeScrollbars="false"/>
Таким образом, вертикальная полоса прокрутки всегда отображается, когда разрешается использование большей высоты макета.
Ответ 8
Скроллер может быть настроен на утилитацию просмотра несколькими способами.
Во-первых, вы можете просто добавить полосу прокрутки в xml и установить ее свойство android: fadeScrollbars = "false", чтобы всегда показывать ее.
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerViewMachine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:fadeScrollbars="false"
android:scrollbarThumbVertical="@android:color/darker_gray"
android:scrollbarSize="5dp"
android:scrollbarStyle="outsideOverlay"/>
Или вы можете создать тему стиля и использовать ее программно при инициализации утилита просмотра
<style name="ScrollbarRecyclerView" parent="android:Widget">
<item name="android:scrollbars">vertical</item>
</style>
RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));
спасибо
Ответ 9
Если вы настроили программно ScrollBar, вы можете использовать ContextThemeWrapper
. Сначала вам нужно определить стиль в файле Style.xml:
<style name="ScrollbarRecyclerView" parent="android:Widget">
<item name="android:scrollbars">vertical</item>
</style>
И затем применяйте стиль при инициализации RecylerView:
RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));
Ответ 10
Добавьте код в список просмотра Recycler xml, чтобы сделать видимость полосы прокрутки.
<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"/>
Ответ 11
просто нужно поместить RecyclerView
в ScrollView
следующим образом:
<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>
Ответ 12
Собственно, это из-за темы. Полосы прокрутки есть, но их не видно, потому что они смешиваются с цветом в родительском представлении или каком-либо другом представлении в строке его предков.
Вы можете создать нарисованную фигуру и дать ей нужный цвет, а затем установить ее в качестве вертикальной или горизонтальной полосы прокрутки. То есть, если вы не хотите возиться с цветами вашей темы.
Ответ 13
Использование xml android:fadeScrollbars="false"
Использование java ScrollView.setScrollbarFadingEnabled(false);