Просмотр пейджера с макетом вкладок выходит за границы экрана - PullRequest
0 голосов
/ 14 января 2020

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

В верхней части макета находится макет вкладки, а под пейджером просмотра. Проблема в том, что пейджер просмотра принимает высоту полного экрана, и в результате (поскольку он ограничен навигационными вкладками) его высота выходит за пределы экрана следующим образом:

enter image description here

My xml:

<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=".activities.MeetActivity">

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/navigationTabs"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@drawable/navigation_shadow"
        app:layout_constraintTop_toTopOf="parent"
        app:tabIndicator="@null"
        app:tabMinWidth="@dimen/navigation_height"
        app:tabRippleColor="@null" />

<!--    // the fragment will be displayed here:-->
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/fragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/navigationTabs"/>

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

Ответы [ 2 ]

1 голос
/ 14 января 2020

Здесь ваш видовой пейджер принимает высоту полного экрана. Пожалуйста, используйте код ниже, чтобы показать пейджер под вашей вкладкой:

<androidx.viewpager.widget.ViewPager
        android:id="@+id/fragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/navigationTabs" />
1 голос
/ 14 января 2020

пейджер просмотра принимает высоту полного экрана

В функции ViewPager onMeasure, wrap_content рассчитывается как размер контейнера (в этом case, ConstaraintLayout).

Попробуйте это.

<androidx.viewpager.widget.ViewPager
        android:id="@+id/fragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/navigationTabs" />
...