如何在Android中创建类似Twitter个人资料页面的布局

时间:2015-08-30 17:40:56

标签: android layout

我正在开发一个应用程序,该应用程序的页面必须有一个标题,后面跟着一个viewpager中的多个回收站视图。但是,我不知道在向下滚动时如何“隐藏”标题。

以下布局不起作用:

assert input('Enter Number: ').isdigit()

因为verticaly可滚动视图不能放在另一个verticaly可伸缩视图中。但是有可能以另一种方式创建这种类型的布局,因为twitter做到了:

enter image description here

那么如何创建这种类型的布局呢?

理论解决方案建议

如果我们有这个布局:

- RecyclerView
    - Header
    - SlidingTabLayout
    - ViewPager
        - RecyclerView

当滚动RecyclerView时,我们会手动向上移动每个元素,这样Header会逐渐被“隐藏”,而ViewPager会更高,是否有效?

1 个答案:

答案 0 :(得分:3)

  

因为verticaly可滚动视图不能放在另一个verticaly可分割视图

事实并非如此,您可以将可滚动视图放入另一个可滚动视图中。管理滚动事件非常困难,而且大部分时间都不是必须的。您不应嵌套可滚动视图。

但是,有NestedScrollingChildNestedScrollingParent的接口,如果正确实现,可能会导致滚动事件。常见的情况是在RelativeLayout内嵌套NestedScrollViewCoordinatorLayout。这也是你如何实现类似Twitter的布局。

您可以在blogpost宣布Android设计支持库或许多其他教程中找到相关信息。您应该使用的基本布局是

<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:layout_height="192dp"
        android:layout_width="match_parent">

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

            <android.support.v7.widget.Toolbar
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"
                app:layout_collapseMode="pin"/>

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

    <! -- Your Scrollable View -->
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

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