Запретить прокрутку ребенка с экрана в ScrollView с экрана - PullRequest
2 голосов
/ 23 января 2020

Как-то я наткнулся на приложение Reddit и удивился, как работает их механизм прокрутки. Как вы можете видеть из рисунка, есть Menubar (панель вверх / вниз, комментирование и обмен комментариями) , которая всегда находится внутри экрана и не может быть прокручена за пределы экрана. когда прокручивается вверх / вниз. При прокрутке вверх он будет расположен под панелью инструментов (серая полоса вверху) . При прокрутке вниз он будет расположен над EditTextView (панель добавления комментариев внизу) .

Reddit Scrolling mechanism

Relative layout

|-->Toolbar    (android:id="@+id/toolbar")

|-->ScrollView (android:layout_below="@id/toolbar")

    |-->Child (This child is located underneath the Toolbar when scrolling up)

    |-->Child

    |-->Child

Если бы я хотел написать эту страницу, какие зависимости, виджеты или концепции мне нужно было бы использовать или изучить?

Примечание. Вы можете дать мне отрывки кодов, если вы предпочитаю :) 1021 *

Ответы [ 3 ]

0 голосов
/ 23 января 2020

Панель инструментов (содержащая меню) находится вне ScrollView в XML.

Или это может даже не быть ScrollView вообще.

Это может быть просто переработка просмотра, но даже в этом случае панель инструментов находится за пределами макета XML, используемого для отображения содержимого.

0 голосов
/ 23 января 2020

Для сокрытия TopBar и bottomBar (поле для комментариев) я рекомендую использовать Animation

Просто вызовите анимацию, например

//on scrollUp
topLayout.animate().translationY(-300).alpha(0.0f).setDuration(300);
// this will make the layout go up and fade to invisible

//on scrollDown
topLayout.animate().translationY(0).alpha(1.0f).setDuration(300);
// this will make the layout come down and fade to be visible

Реализация этого будет для обоих видов с использованием addOnScrollListener() или I Предлагаем вам взглянуть на этот ответ для реализации scroll Up/Down с использованием CoordinateLayout

Надеюсь, это поможет!

0 голосов
/ 23 января 2020

вы можете использовать макет CoordinatorLayout для реализации этой функции. макет, как это. для подробностей вы можете увидеть этот блог в среде.


<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/behavior_demo_coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:layout_scrollFlags="scroll|enterAlways|snap"
        android:background="?attr/colorPrimary" />
</android.support.design.widget.AppBarLayout>

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/behavior_demo_swipe_refresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/behavior_demo_recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.design.widget.CoordinatorLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...