Как сделать так, чтобы фрагмент таблицы помещался ВНУТРИ видоискателя

#android #android-fragments #android-viewpager #height #floating-action-button

Вопрос:

У меня есть простой фрагмент для моего tablayout/viewpager:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".pkgFragment.InputDataOverviewFragment"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"

    >


    <com.google.android.material.appbar.AppBarLayout
        android:id="@ id/abToolBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/BrightYellowCrayola"
        >
        <androidx.appcompat.widget.Toolbar
            android:id="@ id/tbMenuIconWithTitle"
            app:navigationIcon="@drawable/baseline_menu_24"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            >
            <androidx.appcompat.widget.SearchView
                android:id="@ id/svInputdata"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:defaultQueryHint="@string/search_incometypes"
                app:iconifiedByDefault="false"
                app:searchIcon="@null"
                app:queryBackground="@android:color/transparent"
                app:submitBackground="@android:color/transparent"
                android:imeOptions="flagNoExtractUi"
                />

        </androidx.appcompat.widget.Toolbar>
        <com.google.android.material.tabs.TabLayout
            android:id="@ id/tabLayoutInputDataTypes"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="scrollable"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:background="@color/BrightYellowCrayola"
            />
    </com.google.android.material.appbar.AppBarLayout>
        <androidx.viewpager2.widget.ViewPager2
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:layout_below="@id/tabLayoutInputDataTypes"
            android:id="@ id/viewPagerInputDataTypes"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
 

И мой фрагмент, который отображается, когда он выбран в таблице:

 <?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true"

    >

        <androidx.recyclerview.widget.RecyclerView
            android:id="@ id/rvListIncomeType"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingStart="@dimen/zero_margin_when_normal"
            android:paddingEnd="@dimen/zero_margin_when_normal"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@ id/fabAddDeleteIncomeType"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:contentDescription="@string/add_incometype"
        android:minHeight="48dp"
        android:src="@drawable/baseline_person_add_24"
        app:backgroundTint="@color/BrightYellowCrayola" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>
 

Проблема в том, что высота моего фрагмента совпадает с моим родительским фрагментом, и именно поэтому фрагмент по высоте не помещается точно внутри моего видоискателя:

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

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

Каким было бы правильное решение для решения проблемы высоты в таблицах с фрагментом?

Комментарии:

1. для меня это выглядит так, как будто вы используете android:fitsSystemWindows="true" для своих Activity

2. @snachmsm хм, нет, я использую его только для своего фрагмента таблицы (см. Ниже) Я также пытался удалить его раньше, но результат не изменился безрезультатно.

3. Этого не могло произойти с общими макетами.. У вас есть какой-нибудь код java/kotlin? Пожалуйста, поделитесь им.. Также поделитесь XML-файлом стиля

4. @Zain Я опубликовал свое решение ниже. Казалось, это был вопрос компоновки

Ответ №1:

Две строки я удалил (в настоящее время), чтобы это работало:

 android:fitsSystemWindows="true"
 

и

 app:layout_scrollFlags="scroll|enterAlways"
 

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