SwipeRefreshLayout перекрывает BottomAppbar

Мне кажется, я пробовал все, чтобы решить эту проблему, но я не могу понять, как получить Coordinatorlayout, содержащий нижнюю панель приложения, и constraintlayout, который содержит развертку обновления без перекрытия макета обновления нижней панели приложения.

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:animateLayoutChanges="true"
    android:background="@color/colorWhite"
    tools:context=".departures.DeparturesActivity">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:animateLayoutChanges="true"
        android:background="@color/colorWhite"
        tools:context=".departures.DeparturesActivity">

        <RelativeLayout-with-some-stuff-in-it/>

        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
            android:id="@+id/departures_swiperefresh_layout"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintTop_toTopOf="parent"
            tools:layout_editor_absoluteX="0dp">

            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/departures_list"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:paddingLeft="@dimen/md_keylines"
                android:paddingTop="@dimen/md_keylines"
                android:paddingRight="@dimen/md_keylines"
                android:paddingBottom="@dimen/md_keylines" />

        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>


    </androidx.constraintlayout.widget.ConstraintLayout>


    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/departures_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:backgroundTint="@color/colorAccent"
        app:layout_anchor="@id/bottomAppBar"
        app:srcCompat="@drawable/ic_add"
        app:tint="@color/colorWhite" />

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottomAppBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:backgroundTint="@color/colorPrimary"
        app:fabAlignmentMode="end"
        app:fabCradleMargin="4dp"
        app:fabCradleRoundedCornerRadius="16dp"
        app:fabCradleVerticalOffset="4dp"
        app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"
        app:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

SwipeRefreshLayout будет перекрывать нижнюю панель приложения, и я не могу понять, почему.

введите здесь описание изображения

Частично проблема заключается в том, что дизайнер пользовательского интерфейса, кажется, указывает, что constraintlayout расширяется намного ниже координатораLayout.

введите здесь описание изображения

Это связано с добавленным здесь отступом, чтобы разместить макет под панелью действий.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".departures.DeparturesPresenter">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

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


    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/contentFrame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="?android:attr/actionBarSize" />


</androidx.constraintlayout.widget.ConstraintLayout>

person ardevd    schedule 04.01.2020    source источник
comment
скриншоты лучше бы разобрались   -  person Pankaj Kumar    schedule 04.01.2020
comment
сейчас добавлен скриншот.   -  person ardevd    schedule 04.01.2020
comment
попробуйте добавить нижнюю границу к ConstraintLayout следующим образом android:layout_marginBottom="?attr/actionBarSize30dp"   -  person adi purnama    schedule 04.01.2020
comment
Но должен быть способ лучше?   -  person ardevd    schedule 04.01.2020
comment
Извините, мне нужно было набрать android: layout_marginBottom = "?Attr/actionBarSize"   -  person adi purnama    schedule 04.01.2020
comment
Тем не менее, должен быть лучший способ заставить координатыLayout и constraintlayout уважать друг друга, а не добавлять поля?   -  person ardevd    schedule 04.01.2020
comment
@adipurnama, кстати, это не имело никакого значения.   -  person ardevd    schedule 04.01.2020
comment
Я пытаюсь использовать constraintlayout v1.1.3, и я добавляю в constrainlayout android:layout_marginBottom="?attr/actionBarSize", затем при изменении SwipeRefreshLayout android:layout_height="match_parent", затем при изменении recycleView android:layout_height="wrap_content", и он работает, я надеюсь, что это поможет, братан   -  person adi purnama    schedule 05.01.2020
comment
и в <RelativeLayout-with-some-stuff-in-it/> я получаю предупреждение element is not allowed here   -  person adi purnama    schedule 05.01.2020
comment
Это относительный макет, который я отредактировал. Я могу заменить его любым произвольным видом с жестко заданной или динамической высотой, и проблема не исчезнет.   -  person ardevd    schedule 08.01.2020