Ответ 1
Установите это свойство для ScrollView,
android:fillViewport="true"
ScrollView будет расширяться, чтобы заполнить содержимое
У меня есть RecyclerView
, завернутый в LinearLayout
, и он отлично работает, как ожидалось. Я могу видеть все данные в RecyclerView
как заполненные. Пока все хорошо.
Когда я завершаю LinearLayout
в ScrollView
, RecyclerView
исчезает. Я ничего не вижу внутри RecyclerView
. Зачем? Как сделать эту работу.
Страница является одной из вкладок в ViewPagerIndicator
, поэтому все на этой вкладке должно быть в ScrollView
.
Спасибо за помощь.
Установите это свойство для ScrollView,
android:fillViewport="true"
ScrollView будет расширяться, чтобы заполнить содержимое
После проверки реализации причина заключается в следующем. Если RecyclerView
вводится в ScrollView
, то во время шага измерения его высота не указывается (потому что ScrollView
разрешает любую высоту) и, как результат, получает равную минимальную высоту (согласно реализации), которая, по-видимому, равна нулю.
У вас есть несколько вариантов для этого:
RecyclerView
ScrollView.fillViewport
в true
RecyclerView
вне ScrollView
. По-моему, это лучший вариант. Если высота RecyclerView
не ограничена - это случай, когда она помещается в ScrollView
- тогда все виды адаптеров имеют достаточно места вертикально и создаются сразу. В настоящее время нет никакой утилизации просмотра, которая как бы нарушает цель RecyclerView
.Ничего не помогло мне, кроме этого:
mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
int action = e.getAction();
switch (action) {
case MotionEvent.ACTION_MOVE:
rv.getParent().requestDisallowInterceptTouchEvent(true);
break;
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
Я получил этот ответ там. Спасибо Пиюш Гупта за это.
Надеюсь это поможет:
Добавьте эту строку в свой recyclerView xml:
android:nestedScrollingEnabled="false"
Попробуйте, и окно повторного просмотра будет плавно прокручиваться с гибкой высотой внутри прокрутки.
Использование RecyclerView внутри ScrollView не является хорошей практикой.
Когда RecyclerView переносит свой контент, он больше не перерабатывается. Каждая запись в наборе данных имеет элемент View, сохраняемый в памяти до тех пор, пока RecyclerView находится в иерархии макета.
Узнайте больше здесь - https://android.jlelse.eu/android-dev-tip-4-91b7757b1f0a