【问题标题】:Collapsing Toolbar Layout expand on click event and not on scroll折叠工具栏布局在单击事件而不是滚动时展开
【发布时间】:2016-01-07 15:53:36
【问题描述】:

我有一个简单的工具栏,右侧有一个信息图标项。 单击该项目时,我想用动画扩展工具栏。带有新视图和 FAB 按钮。 就像 Textra SMS 正在做的那样。

在展开的工具栏外点击时,我想收起工具栏。

我想知道如何使用 CollapsingToolbarLayout 处理这个问题?是否可以? 我在网上找到的所有示例都随着视图的滚动而折叠/展开(Recyclerview、Scrollview 等......)。但我不希望我的工具栏在滚动视图时移动。

CollapsingToolbarLayout 好用吗?还是我需要自己做这一切?

【问题讨论】:

    标签: android toolbar android-collapsingtoolbarlayout


    【解决方案1】:

    CollapsingToolbarLayout 似乎非常适合这个用途(我实际上相信它会让您的布局看起来比 Textra SMS 应用程序中的布局更好)。

    您将需要一些东西:

    1. 一种禁用CollapsingToolbarLayout 的方法。我认为最好的方法(至少是迄今为止我发现的最好的方法)是使用自定义的CoordinatorLayout 而不是常规的CoordinatorLayout

      public class DisableableCoordinatorLayout extends CoordinatorLayout {
          private boolean mPassScrolling = true;
      
          public DisableableCoordinatorLayout(Context context) {
              super(context);
          }
      
          public DisableableCoordinatorLayout(Context context, AttributeSet attrs) {
              super(context, attrs);
          }
      
          public DisableableCoordinatorLayout(Context context, AttributeSet attrs, int defStyleAttr) {
              super(context, attrs, defStyleAttr);
          }
      
          @Override
          public boolean onStartNestedScroll(View child, View target, int nestedScrollAxes) {
              return mPassScrolling && super.onStartNestedScroll(child, target, nestedScrollAxes);
          }
      
          public void setPassScrolling(boolean passScrolling) {
              mPassScrolling = passScrolling;
          }
      }
      
    2. 您实际上需要禁用您的CollapsingToolbarLayout(您不希望您的CollapsingToolbarLayout 再对滚动做出反应):

      mDisableableCoordinatorLayout.setPassScrolling(false);
      
    3. 您需要使用您的AppBarLayout 展开CollapsingToolbarLayout onOptionsMenu 项点击

      mAppBarLayout.setExpanded(true, true);
      
    4. 您还需要在点击外部时使用AppBarLayout 折叠CollapsingToolbarLayout(以您喜欢的任何方式实现点击外部)

      mAppBarLayout.setExpanded(false, true);
      

    【讨论】:

      猜你喜欢
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      相关资源
      最近更新 更多