Расположение координаторов в сценарии с несколькими фрагментами одного действия - PullRequest
0 голосов
/ 12 марта 2019

У меня есть верхняя панель навигации с панелью инструментов поверх макета координатора. Вышеупомянутый макет является родителем фрагментов, которые будут помещены в контейнер с разметкой кадров.

Один из фрагментов содержит кнопку внизу и обзор переработчика с шириной и высотой Match_parent.

Я хочу скрыть панель приложения (и оставить панель навигации) и кнопку, когда пользователь прокручивает страницу вниз, и отображать их снова, когда пользователь прокручивает вверх.

Я попытался добавить app:layout_behavior="@string/appbar_scrolling_view_behavior" к структуре кадра, содержащей фрагмент, панель приложения правильно скрывается, но кнопка появляется только при прокрутке вниз (как будто в представлении фрагмента имеется margin_top). Поэтому я попытался переключить его и поместить только поведение в представлении фрагмента, теперь кнопка скрывается правильно, но панель приложения не перемещается.

это макет активности:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:id="@+id/parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/light_grey"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/transparent"
        app:elevation="10dp">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/main_color2"
            app:layout_scrollFlags="scroll|enterAlways">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/userName"
                    style="@style/titleText"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="8dp"
                    android:layout_marginStart="8dp"
                    android:layout_marginTop="8dp"
                    android:gravity="start"
                    android:maxLines="1"
                    android:text="Saber Oueslati"
                    android:textColor="@color/white"
                    app:layout_constraintEnd_toStartOf="@+id/balance"
                    app:layout_constraintHorizontal_bias="0.5"
                    app:layout_constraintHorizontal_chainStyle="spread_inside"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/balance"
                    style="@style/titleText"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="8dp"
                    android:layout_marginEnd="8dp"
                    android:layout_marginRight="8dp"
                    android:gravity="end"
                    android:maxLines="1"
                    android:text="150,000,000 TND"
                    android:textColor="@color/white"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.5"
                    app:layout_constraintStart_toEndOf="@+id/userName"
                    app:layout_constraintTop_toTopOf="@+id/userName"
                    app:layout_constraintVertical_bias="0.0" />

            </androidx.constraintlayout.widget.ConstraintLayout>

        </com.google.android.material.appbar.CollapsingToolbarLayout>

        <devlight.io.library.ntb.NavigationTabBar
            android:id="@+id/navBar"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:ntb_badge_bg_color="@color/main_color2"
            app:ntb_badge_gravity="bottom"
            app:ntb_badge_position="left"
            app:ntb_badge_title_color="@color/white"
            app:ntb_badge_use_typeface="true"
            app:ntb_badged="true"
            app:ntb_bg_color="@color/white"
            app:ntb_inactive_color="@color/grey"
            app:ntb_scaled="true"
            app:ntb_title_mode="active"
            app:ntb_title_size="12sp"
            app:ntb_titled="true" />
    </com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

и это макет фрагмента:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".cart.CartFragment">

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/sadFace"
        android:layout_width="0dp"
        android:layout_height="150dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_sad" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/sadMessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_marginTop="8dp"
        android:text="Your cart is empty..."
        android:textAlignment="center"
        android:visibility="gone"
        app:layout_constraintEnd_toEndOf="@+id/sadFace"
        app:layout_constraintStart_toStartOf="@+id/sadFace"
        app:layout_constraintTop_toBottomOf="@+id/sadFace" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recList"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:listitem="@layout/cart_item" />

    <com.google.android.material.button.MaterialButton
        android:id="@+id/checkout"
        style="@style/customButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="24dp"
        android:layout_marginLeft="24dp"
        android:layout_marginRight="24dp"
        android:layout_marginStart="24dp"
        android:text="CheckOut"
        app:layout_behavior="com.gpg.gppay.utils.ScrollAwareFABBehavior"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <androidx.constraintlayout.widget.Group
        android:id="@+id/noProduct"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        app:constraint_referenced_ids="sadFace,sadMessage" />

</androidx.constraintlayout.widget.ConstraintLayout>

enter image description here

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