折叠工具栏布局展开点击事件而不是滚动
Collapsing Toolbar Layout expand on click event and not on scroll
我有一个简单的工具栏,右侧有一个信息图标项。
单击该项目时,我想用动画扩展工具栏。使用新视图和 FAB 按钮。
就像 Textra SMS 所做的那样。
在展开的工具栏外单击时,我想折叠工具栏。
我正在寻找如何使用 CollapsingToolbarLayout 处理这个问题?可能吗?
我在网上找到的所有示例都是 collapsing/Expanding 和视图的滚动(Recyclerview、Scrollview 等...)。但是我不希望我的工具栏在滚动视图时移动。
使用CollapsingToolbarLayout 是个好方法吗?还是我需要一个人完成?
CollapsingToolbarLayout
似乎非常适合这个目的(而且我实际上相信它会使您的布局看起来比 Textra SMS
应用程序中的布局更好)。
您将需要一些东西:
一种禁用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;
}
}
您需要实际禁用您的 CollapsingToolbarLayout
(您不希望您的 CollapsingToolbarLayout
对卷轴做出反应):
mDisableableCoordinatorLayout.setPassScrolling(false);
您需要使用 AppBarLayout
来展开 CollapsingToolbarLayout
onOptionsMenu 项点击
mAppBarLayout.setExpanded(true, true);
您还需要使用 AppBarLayout
在外部单击时折叠 CollapsingToolbarLayout
(以您喜欢的任何方式实现外部单击)
mAppBarLayout.setExpanded(false, true);
我有一个简单的工具栏,右侧有一个信息图标项。 单击该项目时,我想用动画扩展工具栏。使用新视图和 FAB 按钮。 就像 Textra SMS 所做的那样。
在展开的工具栏外单击时,我想折叠工具栏。
我正在寻找如何使用 CollapsingToolbarLayout 处理这个问题?可能吗? 我在网上找到的所有示例都是 collapsing/Expanding 和视图的滚动(Recyclerview、Scrollview 等...)。但是我不希望我的工具栏在滚动视图时移动。
使用CollapsingToolbarLayout 是个好方法吗?还是我需要一个人完成?
CollapsingToolbarLayout
似乎非常适合这个目的(而且我实际上相信它会使您的布局看起来比 Textra SMS
应用程序中的布局更好)。
您将需要一些东西:
一种禁用
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; } }
您需要实际禁用您的
CollapsingToolbarLayout
(您不希望您的CollapsingToolbarLayout
对卷轴做出反应):mDisableableCoordinatorLayout.setPassScrolling(false);
您需要使用
AppBarLayout
来展开CollapsingToolbarLayout
onOptionsMenu 项点击mAppBarLayout.setExpanded(true, true);
您还需要使用
AppBarLayout
在外部单击时折叠CollapsingToolbarLayout
(以您喜欢的任何方式实现外部单击)mAppBarLayout.setExpanded(false, true);