Подтвердить что ты не робот

Как создать нечто похожее на макет Play Newsstand

Я пытаюсь "воссоздать" (что-то похожее) макет Play Newsstand. В документации общая структура для CoordinatorLayout

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

    <!— view that scrolls —>
    <SomeScrollView >
        ….
    </SomeScrollView>
</CoordinatorLayout>

За исключением случаев, когда я смотрю приложение Newsstand, я могу видеть, что SomeScrollView - это действительно ViewPager для TabLayout. Для моего конкретного случая моя основная проблема заключается в том, что мой SomeScrollView должен быть своего рода контейнером для фрагментов. Так что в основном я хочу

-------
|   A |
|     |
-------
|  B  |
|     |
-------

Где A - складная часть, а 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>

Кто-нибудь, пожалуйста, помогите мне заполнить его?

4b9b3361

Ответ 1

Теперь эта библиотека может точно реплицировать макет Play Newstand.

enter image description here

Его очень прост в использовании и имеет огромную область для настроек. Я знаю, что вы не хотите использовать библиотеку как таковую, но это может сделать так легко для вас.

Просто добавьте это,

compile ('com.github.florent37:materialviewpager:[email protected]'){
    transitive = true
}

и добавьте макет в 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"
    />

и следуйте рекомендациям по настройке на странице библиотеки. Теперь, если вы все еще не уверены в его использовании, вы все равно можете подойти к нему и проверить, как была построена библиотека. Это может дать вам достаточно информации о его создании (но это потребует много времени).

Надеюсь, что это поможет.

Ответ 3

Этот проект от iPaulPro должен соответствовать вашим потребностям. Для правильной работы этого поведения ваши фрагменты должны использовать RecyclerView или NestedScrollView. Кстати, это НЕ библиотека.