Как исправить разрыв между AppBarlayout и TabLayout

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

Ставлю изображение своей проблемы.

Как исправить разрыв между AppBarlayout и TabLayout

XML

<RelativeLayout
    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:background = "@color/white">

    <LinearLayout
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:orientation = "vertical">

    <android.support.design.widget.AppBarLayout
        xmlns:android = "http://schemas.android.com/apk/res/android"
        xmlns:app = "http://schemas.android.com/apk/res-auto"
        android:id = "@+id/home_appbarLayout"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        app:elevation = "0dp">
        <android.support.v7.widget.Toolbar
            android:id = "@+id/toolbar"
            android:layout_width = "match_parent"
            android:layout_height = "?android:attr/actionBarSize"
            android:background = "@color/white"
            app:contentInsetStart = "@dimen/margin_8"
            app:contentInsetStartWithNavigation = "@dimen/margin_8"
            app:layout_collapseMode = "pin"
            app:paddingStart = "0dp"
            app:theme = "@style/ThemeOverlay.AppCompat.ActionBar"
            app:titleMarginStart = "@dimen/margin_8">
            <TextView
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:text = "toolbar"/>
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

        <android.support.design.widget.CoordinatorLayout
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            android:background = "@color/rosa_apelucy">
            <android.support.design.widget.TabLayout
                android:id = "@+id/tab_layout"
                app:tabMode = "fixed"
                android:layout_width = "match_parent"
                android:layout_height = "?android:attr/actionBarSize"
                android:background = "@color/transparent"
                android:elevation = "6dp"
                app:tabTextColor = "@color/grey"
                app:tabSelectedTextColor = "@color/pink"
                app:tabIndicatorColor = "@color/pink"/>

            <android.support.v4.view.ViewPager
                android:id = "@+id/pager"
                android:layout_width = "match_parent"
                android:layout_height = "match_parent"
                android:background = "@color/white"/>
        </android.support.design.widget.CoordinatorLayout>
    </LinearLayout>
</RelativeLayout>

ОБНОВИТЬ ВОПРОС

<android.support.design.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:background = "@color/blanco">

    <android.support.design.widget.AppBarLayout
        android:id = "@+id/home_appbarLayout"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        app:elevation = "0dp">
        <android.support.v7.widget.Toolbar
            android:id = "@+id/toolbar"
            android:layout_width = "match_parent"
            android:layout_height = "?android:attr/actionBarSize"
            app:contentInsetStart = "@dimen/margin_8"
            app:contentInsetStartWithNavigation = "@dimen/margin_8"
            app:layout_collapseMode = "pin"
            app:paddingStart = "0dp"
            app:theme = "@style/ThemeOverlay.AppCompat.ActionBar"
            app:titleMarginStart = "@dimen/margin_8">
            <TextView
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:text = "toolbar"/>
        </android.support.v7.widget.Toolbar>
        <android.support.design.widget.TabLayout
            android:id = "@+id/tab_layout"
            app:tabMode = "fixed"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:background = "@color/transparent"
            android:elevation = "6dp"
            android:minHeight = "?android:attr/actionBarSize"
            app:tabTextColor = "@color/gris_oscuro"
            app:tabSelectedTextColor = "@color/rosa_apelucy"
            app:tabIndicatorColor = "@color/rosa_apelucy"
            android:layout_marginTop = "@dimen/margin_25"/>
    </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id = "@+id/pager"
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
app:layout_behavior = "@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>

Как исправить разрыв между AppBarlayout и TabLayout

1
0
825
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Просто удали

<RelativeLayout
        android:layout_width = "match_parent"
        android:layout_height = "25dp"
        android:background = "@color/black">
</RelativeLayout>

Эта часть не проблема ... Убираю и все равно есть зазор

S.P. 04.10.2018 12:26
Ответ принят как подходящий

На мой взгляд, это не очень хорошая практика. Вы использовали CoordinatorLayout и TabLayout внутри него и еще много других вопросов.

Вместо этого используйте CoordinatorLayout в качестве корневого макета и после AppBarLayout в качестве его дочернего элемента, затем Toolbar и TabLayout внутри AppBarLayout.

Итак, структура будет:

<CoordinatorLayout
  <AppBarLayout
   <Toolbar/>
    <TabLayout/> 
  </AppBarLayout>
   <ViewPager/>
<CoordinatorLayout/>

После этого используйте ViewPager внутри CoordinatorLayout, как это, и добавьте следующую строку кода:

<android.support.v4.view.ViewPager
   android:id = "@+id/pager"
   android:layout_width = "match_parent"
   android:layout_height = "match_parent"
   android:background = "@color/white"
   app:layout_behavior = "@string/appbar_scrolling_view_behavior"/>

Библиотека поддержки Обновлять::

<android.support.design.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.support.design.widget.AppBarLayout
        android:id = "@+id/home_appbarLayout"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        app:elevation = "0dp">

        <android.support.v7.widget.Toolbar
            android:id = "@+id/toolbar"
            android:layout_width = "match_parent"
            android:layout_height = "?android:attr/actionBarSize"
            app:layout_collapseMode = "pin"
            app:theme = "@style/ThemeOverlay.AppCompat.ActionBar">

            <TextView
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:text = "toolbar" />
        </android.support.v7.widget.Toolbar>

        <android.support.design.widget.TabLayout
            android:id = "@+id/tab_layout"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:elevation = "6dp"
            android:minHeight = "?android:attr/actionBarSize"
            app:tabMode = "fixed" />
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id = "@+id/pager"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        app:layout_behavior = "@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>

Рабочий макет (AndroidX)

<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">

    <com.google.android.material.appbar.AppBarLayout
        android:id = "@+id/home_appbarLayout"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        app:elevation = "0dp">

        <androidx.appcompat.widget.Toolbar
            android:id = "@+id/toolbar"
            android:layout_width = "match_parent"
            android:layout_height = "?android:attr/actionBarSize"
            app:layout_collapseMode = "pin"
            app:theme = "@style/ThemeOverlay.AppCompat.ActionBar">

            <TextView
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:text = "toolbar" />
        </androidx.appcompat.widget.Toolbar>

        <com.google.android.material.tabs.TabLayout
            android:id = "@+id/tab_layout"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:elevation = "6dp"
            android:minHeight = "?android:attr/actionBarSize"
            app:tabMode = "fixed" />
    </com.google.android.material.appbar.AppBarLayout>

    <androidx.viewpager.widget.ViewPager
        android:id = "@+id/pager"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        app:layout_behavior = "@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

Если он сохранит этот RelativeLayout с черным фоном, он сможет делать все, что захочет, у него всегда будет видна эта черная линия высоты 25dp.

Maik Peschutter 04.10.2018 12:35

Это не проблема. Я удалил это и сохранил зазор

S.P. 04.10.2018 12:36

@MaikPeschutter ViewPager не будет работать должным образом, если он / она будет использовать его таким образом. Собственно, упомянул правильный способ это сделать.

ʍѳђઽ૯ท 04.10.2018 12:38

@ S.P. Я точно не сказал «удалить», проблема в базовом дизайне ваших кодов. Пожалуйста, взгляните на мой ответ еще раз. То, как вы его спроектировали, кажется неправильным. На самом деле, дал вам лучший способ добиться такого макета.

ʍѳђઽ૯ท 04.10.2018 12:40

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

S.P. 04.10.2018 12:41

Все еще виден черный промежуток, и я вижу еще один белый промежуток ниже

S.P. 04.10.2018 12:50

Проверьте мой обновленный ответ. Добавлено как для библиотеки поддержки, так и для AndroidX.

ʍѳђઽ૯ท 04.10.2018 12:51

Другие вопросы по теме