Как создать нечто похожее на макет 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>
Кто-нибудь, пожалуйста, помогите мне заполнить его?
Ответы
Ответ 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"
/>
и следуйте рекомендациям по настройке на странице библиотеки. Теперь, если вы все еще не уверены в его использовании, вы все равно можете подойти к нему и проверить, как была построена библиотека. Это может дать вам достаточно информации о его создании (но это потребует много времени).
Надеюсь, что это поможет.
Ответ 2
Этот ObservableScrollView кажется чем-то похожим на то, что вы ищете: https://github.com/ksoichiro/Android-ObservableScrollView
Ответ 3
Этот проект от iPaulPro должен соответствовать вашим потребностям.
Для правильной работы этого поведения ваши фрагменты должны использовать RecyclerView
или NestedScrollView
.
Кстати, это НЕ библиотека.