首页 > 解决方案 > 在 Coordinatorlayout 下的 Tablayout 下定位 View Pager

问题描述

我在 CoordinatorLayout 中有一个 Appbar、Tablayout 和一个 ViewPager。但是 ViewPager 总是与屏幕中的所有其他视图重叠,除非我指定了除“MatchParent”或“WrapContent”之外的确定高度。我尝试了几件事,但除了根据屏幕尺寸动态设置高度之外,没有什么对我有用。我想知道!xml 本身必须有某种方法可以做到这一点。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.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:orientation="vertical"

>

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/logocolor"
        android:id="@+id/appbar"



        >
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar1"
            android:layout_height="match_parent"
            android:layout_width="match_parent"

            app:title="FlashBook"
            app:titleTextColor="@color/whitetish"

            app:layout_scrollFlags="scroll|enterAlways|snap"
            />


    </android.support.design.widget.AppBarLayout>

<android.support.design.widget.TabLayout
    android:id="@+id/tablayout"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_alignParentStart="true"
    android:background="@color/logocolor"
    app:layout_anchor="@id/appbar"
    app:layout_anchorGravity="bottom"
    android:layout_gravity="bottom">

</android.support.design.widget.TabLayout>

<include
    layout="@layout/viewpager_layout"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_anchor="@id/tablayout"
    app:layout_anchorGravity="bottom"
    android:layout_gravity="bottom"

    >

</include>


</android.support.design.widget.CoordinatorLayout>

这是我的活动布局和..

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/viewpagermain"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="@layout/activity_appbartestactvity"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

</android.support.v4.view.ViewPager> 

这是viewpager_layout ..

标签: javaandroidandroid-xmlandroid-coordinatorlayout

解决方案


尝试ViewPager直接添加作为CoordinatorLayout孩子:

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

或者,如果您需要<include标签,也可以将此行添加到<include

app:layout_behavior="@string/appbar_scrolling_view_behavior"

此外,最好TabLayout在.AppBarLayoutToolbar

为了可滚动,添加:app:layout_scrollFlags="scroll|enterAlways"

要在折叠后粘在那里,请添加:app:layout_collapseMode="pin"


推荐阅读