Ленивые представления в RecyclerView в NestedScrollView - PullRequest
0 голосов
/ 01 октября 2018

Таргетинг androidx 1.0.0, чтобы разрешить устройства до Lollipop (скажем, minSdkVersion 17 или около того).

Я пробовал много комбинаций представлений, настроек, режимов прокрутки и менеджеров компоновки.Я прочитал все - например, это и это и это - относительно этой проблемы.Либо у меня плохая производительность компоновки / рендеринга, либо неправильная / некорректная прокрутка.

Требования:

  1. Нижняя таблица перетаскивается снизу.Распространенный шаблон пользовательского интерфейса в современных приложениях.
  2. 10-20 тяжелые дочерние представления одинакового размера.Их нельзя раздувать / рисовать, когда они невидимы.
  3. Использование нативных представлений Android / Google предпочтительнее .

Как этого добиться?

Вот некоторый псевдокод, показывающий, чего я пытаюсь достичь;RecyclerView (или эквивалент) внутри NestedScrollView с BottomSheetBehavior:

<ScrollView>
  <!-- Main content -->
</ScrollView>
<androidx.core.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true"
    android:fitsSystemWindows="true"
    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
    app:behavior_hideable="false"
    app:behavior_peekHeight="@dimen/bottom_sheet_peek_height">

    <!-- RecyclerView? -->  
        <TextView android:layout_width="match_parent"
            android:layout_height="@dimen/bottom_sheet_peek_height"
            android:text="Bottom sheet header" />

        <-- N heavy equally sized child views here -->

</androidx.core.widget.NestedScrollView>

Я читал, что RecyclerView превосходит ListView.Тем не менее, кажется, что он никогда не перезапускает свои представления, учитывая вышеуказанную конфигурацию.

...