【问题标题】:CollapsingToolbarLayout Scrolling issuesCollapsingToolbarLayout 滚动问题
【发布时间】:2016-01-21 13:25:58
【问题描述】:

我对已经在 Android Studio 中给出的ScrollingActivity 中的CollapsingToolbarLayout 有疑问。

向下滚动动作完美,但是当我想向上滚动时,它总是显示到达屏幕末尾而无需再次展开 Toolbar。要展开Toolbar,当到达屏幕末尾时,我必须再次向上滚动。

由于我不太擅长解释问题,所以我在 YouTube 上上传了一个视频,以便您自己观看。

视频:https://youtu.be/WrzsY2ooj9o

您还可以在其中看到一个小错误。工具栏有时会自行折叠,只是用手指做出“不良动作”,我想你可以在 0:11 看到它。

感谢您的帮助!

<?xml version="1.0" encoding="utf-8"?>
<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"
    android:fitsSystemWindows="true"
    tools:context="com.appmac.ron.myapplication.ScrollingActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:fitsSystemWindows="true"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/AppTheme.PopupOverlay" />

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

    <include layout="@layout/content_scrolling" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_dialog_email"
        app:layout_anchor="@id/app_bar"
        app:layout_anchorGravity="bottom|end" />

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

【问题讨论】:

  • 对我来说也是一样,我几乎尝试了所有方法,但没有结果。我认为这是设计使然,没有办法调整这种行为。
  • 但必须有办法,facebook、whatsapp 和 co。已经在他们的应用程序中做到了。 @米纳斯
  • 是的,他们都使用其他自定义解决方案。他们甚至在 CollapsingToolbarLayout 可用之前就做到了。和Play Store一样,它使用了别的东西,你可以逆向代码看看:)
  • 你可以使用另一个库,例如github.com/ManuelPeinado/FadingActionBar它有你想要的行为,有趣的是我从它切换到使用设计库中的所有内容
  • @Minas 谢谢,但我有一个一般性的问题。当我想出售我的应用程序时,我如何处理您的链接中的 Desing Libarys?我需要征求许可还是必须购买?我是新手,这就是我问的原因。

标签: toolbar android-coordinatorlayout android-collapsingtoolbarlayout


【解决方案1】:

更新到 26.0.0-beta2。 AppbarLayout 应该按预期工作。详情:Carry on Scrolling

好的,我认为third party library 可以使它工作。其实我反编译了别人的app发现了这个:)

以上所有内容都已失效,我发现了这个。有一个简单的方法可以解决这个问题。只需为您的 nestedsrollview 设置一个 OnScrollChangeListener 侦听器。关键代码如下:

nestScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
  @Override
  public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX,
      int oldScrollY) {
    if(scrollY == 0) appBarLayout.setExpanded(true);  
  }
});

动画将通过方法appBarLayout本身来完成。

【讨论】:

  • 不幸的是不是灵丹妙药,因为滚动不流畅。
  • 我已经尝试了所有可能的解决方案,但没有什么对我有用。我想这个解决方案适合我的需要,因为它使用 snap。这对我来说是一个不好的做法,但没关系。修复还没有完成,所以我必须解决这个问题。谢谢
  • @DawidHyży 你是对的,这不是聪明的方法,更新到 26.0.0-beta2。 AppbarLayout 应该按预期工作。详情:Carry on Scrolling
【解决方案2】:

参考Google issue tracker最新的库版本 26.1.0 已解决问题。

如果任何问题仍然存在,请通过Google issue tracker 报告,他们将重新打开进行检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-11
    • 2018-02-11
    • 2016-07-31
    • 2017-06-09
    • 2018-06-10
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多