По дизайну продукта у меня есть два списка в прокрутке. Вместо списков я использую reyclerviews. Опыт прокрутки очень медленный, как вы могли себе представить. Я смог решить проблему с задержкой, установив NestedScrollingEnabled (false) для обоих моих recyclerviews.Плавная прокрутка с двумя списками внутри прокрутки
rv1.setNestedScrollingEnabled(false);
rv2.setNestedScrollingEnabled(false);
Конфликт, с которым я столкнулся, заключается в том, что NestedScrolling - это функция для API 21+. Что такое эквивалентный код для более ранних версий API?
Я пробовал следующее, но элементы списка не могут быть изменены. Однако прокрутка очень гладкая.
rv1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
rv2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
Я пытался настроить код так, что мои пункты могут быть интерактивными, поэтому я обновил код к следующему, однако, теперь плавный скроллинг ушел, но мои пункты кликабельны.
rv1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// disallow scrollview to intercept touch events
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_UP:
// allow scrollview to intercept touch events
v.getParent().requestDisallowInterceptTouchEvent(true);
break;
v.onTouchEvent(event);
return true;
}
});
rv2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// disallow scrollview to intercept touch events
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_UP:
// allow scrollview to intercept touch events
v.getParent().requestDisallowInterceptTouchEvent(true);
break;
v.onTouchEvent(event);
return true;
}
});
Я думаю, что это может быть как мой XML структурирована, родитель на самом деле оболочка LinearLayout и не Scrollview, хотя это только моя теория. Я опубликовал, как xml структурирован ниже.
<ScrollView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.CardView
....
....
<android.support.v7.widget.RecyclerView
android:id="@+id/rv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@null"
android:overScrollMode="never"
android:scrollingCache="false"/>
</android.support.v7.widget.CardView>
</LinearLayout>
</ScrollView>
Любая помощь с этим была бы оценена, спасибо заранее!