Как переопределить прокрутку?

У меня такой расклад:

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.v4.widget.NestedScrollView
    xmlns:android = "http://schemas.android.com/apk/res/android"
    android:id = "@+id/left_col"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation = "vertical">

    <LinearLayout
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:orientation = "vertical">

        <TextView
            android:id = "@+id/textView1"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content" />

        <android.support.v7.widget.RecyclerView
            android:id = "@+id/recyclerView"
            android:layout_width = "match_parent"
            android:layout_height = "500dp"/>

        <TextView
            android:id = "@+id/textView2"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content" />

    </LinearLayout>

</android.support.v4.widget.NestedScrollView>

Высота recyclerView предопределена кодом и равна высоте экрана устройства. Идея в том, что пользователь не ощущает на экране 2 вертикальных прокрутки (то есть, чтобы он выглядел как 1 прокрутка). Как сделать так, чтобы при textView1 плавно прокручивался контент до начала recyclerView, останавливался, а потом прокручивался, проходил внутри recyclerView?

Аналогичное поведение будет, если я установлю android:layout_height = "wrap_content" на RecycleView, но в этом случае будет невозможно использовать recycle и получить OutOfMemory на больших данных.

Tim 30.05.2018 17:41
0
1
142
1

Ответы 1

Если я правильно понял, у вас есть несколько вариантов:

  1. Если вы не хотите выполнять прокрутку за пределами RecyclerView, замените NestedScrollView на другой тип ViewGroup, например LinearLayout.
  2. Если вы хотите иметь непрерывную вертикальную прокрутку, вы можете программно отключить ее с помощью recyclerView.setNestedScrollingEnabled(false);.

Кроме того, у вашего recyclerView не будет динамического размера экрана, потому что вы используете статическую высоту android:layout_height = "500dp".

Вы меня не поняли. Я хочу, чтобы содержимое прокручивалось до начала позиции RecycledViev и останавливалось. Весь последующий импульс был передан RecyclerViev, и он прокрутил элементы.

Tim 30.05.2018 17:34

И я переопределяю высоту RecycleView по коду. Значение, указанное в макете, ничего не значит.

Tim 30.05.2018 17:37

Хорошо, вы хотите прокручивать только внутри RecyclerView? Так что смените NestedScrollView , иначе на экране появятся две полосы прокрутки.

thiagozg 01.06.2018 21:11

Я вам уже 2 раза объяснял, и вы не поняли. Пожалуйста, ответьте на вопрос. Как переопределить прокрутку? Для получения дополнительной информации я могу объяснить это только по-русски.

Tim 06.06.2018 11:09

Я уже ответил на это, у вас есть два варианта, чтобы продолжить, прочитайте мой первый ответ еще раз.

thiagozg 07.06.2018 15:55

Нет, вы ответили на совершенно другой вопрос. Здесь возник вопрос: как отменить прокрутку? Ожидается ответ, содержащий обработку MotionEvent.

Tim 08.06.2018 11:28

Другие вопросы по теме