如何创建类似于Play报亭布局的内容

Kat*_*lon 19 android android-layout android-coordinatorlayout

我正试图"重新创建"(类似于)Play报亭的布局.根据文档,CoordinatorLayout的一般结构是

<CoordinatorLayout>
    <!—  view that shrinks —>
    <AppBarLayout>
        <CollapsingToolbarLayout>
            …
        </CollapsingToolbarLayout>
    </AppBarLayout>

    <!— view that scrolls —>
    <SomeScrollView >
        ….
    </SomeScrollView>
</CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

除了我看报亭应用程序外,我能看到的是它SomeScrollView实际上是一个用于TabLayout的ViewPager.对于我的特殊情况,我的主要问题是我SomeScrollView必须成为碎片的某种容器.基本上我想要的是

-------
|   A |
|     |
-------
|  B  |
|     |
-------
Run Code Online (Sandbox Code Playgroud)

其中A是可折叠部分,B是滚动部分.同样,对于我的情况,B是动态片段的容器.所以A将有一个TabLayout,当用户点击一个标签时,它会导致B中的可见片段发生变化.B中的片段将包含RecycleView或可滚动的TextView.(实际上其中一个片段是一个FrameLayout,它包含一个RecycleView和一个TextView,其中任何一个都是可见的)

到目前为止,这是我的代码:

<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"
    tools:context=".MainActivity">

    <!-- collapsing view -->
    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <include
                …
                />

            <android.support.design.widget.TabLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_scrollFlags=“…”
                />

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

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

    <!-- scrolling view -->
    <android.support.v4.view.ViewPager
        android:id="@+id/main_viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

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

    <android.support.design.widget.FloatingActionButton
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        app:layout_anchor="@id/app_bar"
        app:layout_anchorGravity="bottom|right|end"
        android:src="@drawable/ic_add"
        android:layout_margin="@dimen/minor_horizontal_margin"
        android:clickable="true"/>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

有人请帮我完成吗?

Ari*_*Roy 10

现在,这个可以完全复制 Play Newstand布局.

在此输入图像描述

非常易于使用,并且具有很大的自定义范围.我知道你不愿意使用这样的库,但这可以使你的事情变得如此简单.

加上这个,

compile ('com.github.florent37:materialviewpager:1.0.7@aar'){
    transitive = true
}
Run Code Online (Sandbox Code Playgroud)

并以XML格式添加布局

<com.github.florent37.materialviewpager.MaterialViewPager
    android:id="@+id/materialViewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:viewpager_logo="@layout/header_logo"
    app:viewpager_logoMarginTop="100dp"
    app:viewpager_color="@color/colorPrimary"
    app:viewpager_headerHeight="200dp"
    app:viewpager_headerAlpha="1.0"
    app:viewpager_hideLogoWithFade="false"
    app:viewpager_hideToolbarAndTitle="true"
    app:viewpager_enableToolbarElevation="true"
    app:viewpager_parallaxHeaderFactor="1.5"
    app:viewpager_headerAdditionalHeight="20dp"
    app:viewpager_displayToolbarWhenSwipe="true"
    app:viewpager_transparentToolbar="true"
    app:viewpager_animatedHeaderImage="true"
    />
Run Code Online (Sandbox Code Playgroud)

并按照库页面上的自定义指南进行操作.现在,如果您仍然不相信使用它,您仍然可以转向它并检查库是如何构建的.它可以为您提供足够的洞察力来自己创建(但这将是耗时的)

希望能帮助到你.