折叠工具栏布局扩展单击事件而不是滚动

时间:2016-01-07 15:53:37

标签: android toolbar android-collapsingtoolbarlayout

我有一个简单的工具栏,右侧有一个信息图标项。 单击该项目时,我想用动画展开工具栏。使用新视图和FAB按钮。 就像Textra短信一样。

在展开的工具栏外单击时,我想缩小工具栏。

我在寻找如何使用CollapsingToolbarLayout来处理这个问题?可能吗? 我在网上找到的所有示例都是折叠/扩展视图的滚动(Recyclerview,Scrollview等...)。但滚动我的视图时,我不希望我的工具栏移动。

这是使用CollapsingToolbarLayout的好方法吗?或者我是否需要自己完成所有工作?

1 个答案:

答案 0 :(得分:2)

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);