android - 折叠工具栏布局展开点击事件而不是滚动

标签 android toolbar android-collapsingtoolbarlayout

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

在展开的工具栏外单击时,我想折叠工具栏。

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

使用CollapsingToolbarLayout 是个好方法吗?还是我需要自己做所有事情?

最佳答案

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 对滚动使用react):

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

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

    mAppBarLayout.setExpanded(false, true);
    

关于android - 折叠工具栏布局展开点击事件而不是滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34659501/

相关文章:

android - 在 TextView 中显示当前音频幅度

android - Android Studio 上的多设备 View ?

java - 如何从数据库中的数据填充 UI?

android - 如何将图标添加到第二个工具栏

android - 获取 Android 中可用铃声的列表

Android - 删除工具栏和 TabLayout 之间的阴影

android - CollapsingToolbarLayout setTitle() 不会更新,除非折叠

android - 在 CollapsingToolbarLayout 后隐藏标题

android - 折叠工具栏布局状态栏问题

android - 状态栏后面的工具栏