Я пытаюсь использовать AppBarLayout с панелью инструментов, компонентом TabLayout и Viewpager, но у меня появляется черный разрыв между панелью инструментов и макетом вкладок, и я не совсем понимаю, почему. Я просмотрел несколько примеров здесь, и они не работают.
Ставлю изображение своей проблемы.
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>
Просто удали
<RelativeLayout
android:layout_width = "match_parent"
android:layout_height = "25dp"
android:background = "@color/black">
</RelativeLayout>
На мой взгляд, это не очень хорошая практика. Вы использовали 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.
Это не проблема. Я удалил это и сохранил зазор
@MaikPeschutter ViewPager не будет работать должным образом, если он / она будет использовать его таким образом. Собственно, упомянул правильный способ это сделать.
@ S.P. Я точно не сказал «удалить», проблема в базовом дизайне ваших кодов. Пожалуйста, взгляните на мой ответ еще раз. То, как вы его спроектировали, кажется неправильным. На самом деле, дал вам лучший способ добиться такого макета.
Я пробовал, но не показывал панель инструментов и не показывал раскладку вкладок. Пожалуйста, ответьте мне на вопрос об обновлении с вашим кодом
Все еще виден черный промежуток, и я вижу еще один белый промежуток ниже
Проверьте мой обновленный ответ. Добавлено как для библиотеки поддержки, так и для AndroidX.
Эта часть не проблема ... Убираю и все равно есть зазор