gpt4 book ai didi

android - 使用 CollapsingToolbarLayout 时更改 FloatingButton 的行为

转载 作者:行者123 更新时间:2023-11-30 01:44:22 24 4
gpt4 key购买 nike

我正在开发一个应用程序,我有一个带有 CollapsingToolbarLayout 的页面和一个 ImageView(用户的图片)代替 FloatingActionButton.

默认行为是在 CollapsingToolbarLayout 完全隐藏时隐藏图像,但我想要一个不同的行为:我希望当用户向上滚动页面时,图像继续前进,但速度很慢。所以,当它完全隐藏时,图像出现在工具栏下方,像这样(只是一个更好理解的例子):

之前: enter image description here

之后: enter image description here

有办法吗?

最佳答案

您需要扩展 CoordinatorLayout.Behavior<FloatingActionButton>并覆盖方法上的行为 onDependentViewChanged .

public class ScrollingFABBehavior extends CoordinatorLayout.Behavior<FloatingActionButton> {

private int toolbarHeight;

public ScrollingFABBehavior(Context context, AttributeSet attrs) {
super(context, attrs);

this.toolbarHeight = GenericUtils.getActionBarHeight(context);
}

@Override
public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton fab, View dependency) {
return dependency instanceof AppBarLayout || dependency instanceof Snackbar.SnackbarLayout;
}

@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton fab, View dependency) {
if (dependency instanceof AppBarLayout) {
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
int fabBottomMargin = lp.bottomMargin;
int distanceToScroll = fab.getHeight() + fabBottomMargin;
float ratio = dependency.getY() / (float) toolbarHeight;

fab.setTranslationY(-distanceToScroll * ratio);

return true;
}

if (dependency instanceof Snackbar.SnackbarLayout) {
float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());

fab.setTranslationY(translationY);

return true;
}

return false;
}

}

您可以在此处查看开源应用程序的示例:https://github.com/nowsecure/android-vts/blob/master/app/src/main/java/fuzion24/device/vulnerability/test/ScrollingFABBehavior.java

关于android - 使用 CollapsingToolbarLayout 时更改 FloatingButton 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33945214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com