gpt4 book ai didi

android - 保持 CollapsingToolbarLayout 永久关闭,只能以编程方式控制

转载 作者:行者123 更新时间:2023-11-29 23:29:23 24 4
gpt4 key购买 nike

我只想以编程方式展开 CollapsingToolbarLayout。

我遇到了这个: https://code.luasoftware.com/tutorials/android/how-to-disable-or-lock-collapsingtoolbarlayout-collapse-or-expand/

它有效。但是,我想让 RecyclerView Touch 事件保持 Activity 状态,因为我在 Coordinator 布局中有一个 FAB。

这可能吗?

最佳答案

我不记得我是从哪里得到这个的,但它对我来说非常有用。它是 AppBarLayout 的自定义行为:

public class LockableAppBarLayoutBehavior extends AppBarLayout.Behavior {

boolean locked;
private DragCallback dragCallBack = new DragCallback() {
@Override
public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
return !locked;
}
};

public LockableAppBarLayoutBehavior() {
setDragCallback(dragCallBack);
}

public LockableAppBarLayoutBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
setDragCallback(dragCallBack);
}

public void setLocked(boolean locked) {
this.locked = locked;
}

@Override
public boolean onStartNestedScroll(CoordinatorLayout parent, AppBarLayout child, View directTargetChild, View target, int nestedScrollAxes, int type) {
if (locked) {
return false;
}

return super.onStartNestedScroll(parent, child, directTargetChild, target, nestedScrollAxes, type);
}

public boolean isLocked() {
return locked;
}
}

最简单的用法是在您的布局 xml 中:

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:layout_behavior="path.to.the.class.LockableAppBarLayoutBehavior"
>

最后,这是您如何在代码中锁定和解锁:

CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
LockableAppBarLayoutBehavior behavior = (LockableAppBarLayoutBehavior) layoutParams.getBehavior();
behavior.setLocked(true);

关于android - 保持 CollapsingToolbarLayout 永久关闭,只能以编程方式控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52916687/

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