【发布时间】:2015-08-18 04:02:10
【问题描述】:
我一直在努力寻找这个问题的有效答案,似乎我正在解决设计库中的一个错误,或者没有我想要做的答案。
我有一个带有视差图像的 CollapsingToolbar 和下面的 ViewPager。 ViewPager 只会作用于水平滚动,而底部的黑框是一个 TextView,它将进行垂直滚动并折叠 Toolbar。
我的解决方案现在不是很好,原因有几个 - 这里有一个 VIDEO 来说明原因。
在 API22(大概是 21)上,我的 TitleBar 下方有一个阴影,这破坏了与下面 TabLayout 的连续性。
我的 ViewPager 只能水平翻页。它还需要接受垂直输入并折叠工具栏。
我有一个 TextView,它垂直分页,折叠 ToolBar。所以它确实有效,只是不能作为仅使用 ViewPager 的多合一解决方案。
为什么 ViewPager 不能处理水平和垂直滚动是我无法理解的。也许设计库中尚不存在该功能,并且没有解决方法。我什么都试过了,到处找。这是我能做的最好的:
<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"
tools:context=".MainActivity"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="?attr/actionBarSize"
android:fitsSystemWindows="true"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/backdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/md_white_1000"
android:scaleType="fitCenter"
android:src="@drawable/backdrop"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.7"/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
style="@style/CustomTabs"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/viewpager_padding_default"/>
</LinearLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/drawer_padding_default"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:padding="@dimen/drawer_padding_default"
android:textColor="@color/textColorPrimary"
android:background="@drawable/myrect" />
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_action"
android:src="@mipmap/ic_action_help"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/drawer_padding_default"
android:scaleType="center"
app:borderWidth="0dp"
app:layout_anchor="@id/main_content"
app:layout_anchorGravity="bottom|right|end"/>
</android.support.design.widget.CoordinatorLayout>
【问题讨论】:
-
你能简单解释一下什么不起作用。
-
视频底部的黑框是@+id/TextView。您可以在此视图上使用垂直滚动移动折叠工具栏。然而,ViewPager 只能水平滚动。我希望 ViewPager 也能够折叠工具栏并删除 TextView,因为我不需要它。它现在就在那里,因为这是我可以垂直滚动的唯一方式。基本上我不明白为什么 ViewPager 不会折叠工具栏。
-
只需从
Toolbar中删除app:layout_collapseMode="pin" -
这无助于解决我遇到的问题。我确实希望工具栏也保持固定。问题是 ViewPager 似乎忽略了垂直滚动。我知道垂直滚动有效,因为 TextView 能够触发折叠。我不知道的是为什么 ViewPager 也不会触发垂直滚动。那里的例子很少,有些人建议在 AppBar 之前使用 ViewPager,其他人包括在 CollapsingToolbar 内使用 TabLayout,但它们都没有让我更接近我想要实现的目标。也许我的 XML 订单不好?我不知道。
-
我想我找到了问题的答案。我将 ViewPager 嵌套在 NestedScrollView 中。我需要将片段本身嵌套在 NestedScrollView 中。
标签: android android-viewpager toolbar