【问题标题】:Parallax effect and snapping toolbar like Google Play Store app视差效果和捕捉工具栏,如 Google Play 商店应用程序
【发布时间】:2016-12-25 16:02:29
【问题描述】:

我想创建类似于 Google Play 商店应用的 UI。也就是说,它包括以下这些特性:

  • 抽屉布局
  • 视差效果
  • 捕捉用户向上滚动时进入的工具栏
  • 顶部图片位于状态栏后面

我已经创建了布局来实现上述功能,它工作正常,除了两件事:

  1. 工具栏在向上滚动时不对齐
  2. 视差效果不起作用

这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinator_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/app_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/green_dark"
            android:fitsSystemWindows="true">

            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapsing_toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fitsSystemWindows="true"
                app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
                app:contentScrim="@color/green_dark"
                app:statusBarScrim="@color/green_dark"
                app:titleEnabled="false">

                <ImageView
                    android:id="@+id/top_app_imageview"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:adjustViewBounds="true"
                    android:fitsSystemWindows="true"
                    android:scaleType="centerCrop"
                    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_scrollFlags="scroll|enterAlways|snap"
                    app:layout_collapseMode="pin"
                    app:theme="@style/SearchToolbarStyle" />

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

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="10dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    </android.support.design.widget.CoordinatorLayout>


    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:elevation="6dp"
        app:headerLayout="@layout/layout_drawer_header"
        app:menu="@menu/drawer_menu" />

</android.support.v4.widget.DrawerLayout>

这是我的 gradle 的样子:

{
...
buildToolsVersion "25.0.0"
...
}

dependencies {
    ....
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile 'com.android.support:recyclerview-v7:25.1.0'
    compile 'com.android.support:support-v4:25.1.0'
    compile 'com.android.support:design:25.1.0'
    compile 'com.android.support:cardview-v7:25.1.0'
   ....
}

任何想法为什么视差效果不起作用以及如何实现捕捉工具栏?

【问题讨论】:

    标签: android material-design android-coordinatorlayout android-collapsingtoolbarlayout


    【解决方案1】:
    1. 视差效果不起作用的原因是我使用setLayoutParams 以编程方式设置ImageView 的(id:top_app_imageview)宽度和高度。以某种方式中断以获得正确的视差效果。解决方法是以编程方式设置AppBarLayout 的宽度和高度,并将Imageviewlayout_height 更改为match_parent
    2. 我通过将CollapsingToolbarLayoutlayout_scrollFlags 更改为"scroll|enterAlways|enterAlwaysCollapsed|snap" 使工具栏对齐

    【讨论】:

    • 1. 所以你应该在提问之前把这些信息放在你的问题中......我的答案是正确的,你可以在这里看到:stackoverflow.com/a/35241363/4409113 2。 你能把输出的视频制作成视频看看发生了什么吗?
    【解决方案2】:

    试试这个;

    在您的Toolbar 中删除此行:

    app:layout_collapseMode="pin"
    

    只需在您的 Toolbar 中使用它:

    app:layout_scrollFlags="scroll|enterAlways"
    

    所以我们有:

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:layout_scrollFlags="scroll|enterAlways"
        app:theme="@style/SearchToolbarStyle" />
    

    【讨论】:

    • 感谢您的回答。但它没有用!同样的结果
    • @Umarov 你想得到类似这样的视频输出吗?正确的 ? sendvid.com/ugjspx8r 取自:stackoverflow.com/questions/32569824/… 因为我做了测试并且它有效。请清楚哪个部分没有工作,通过从输出中获取视频,那会很棒。
    • 感谢您的宝贵时间。请看我的回答。
    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    相关资源
    最近更新 更多