我想根据一些出现和消失的零食栏来改变浮动动作按钮的位置。小吃店可以自行调整,但它不适用于手工解雇的零食吧。我想在后一种情况下在onDependentViewRemoved中设置位置,但是,由于onRependentViewChanged和onDependentViewRemoved都被调用,因此超时小吃栏会导致一些问题。因此,如果给定的零食栏被解除或超时,我想以某种方式能够在onDependentViewChanged或onDependentViewRemoved中检测到。将快餐栏的视图设置为浮动操作按钮不是一个选项,因为这些零食栏可以出现在多个碎片上,而不是所有碎片都有浮动操作按钮。我想知道是否有人知道浮动动作按钮的行为中是否有这样的事件/状态检测?
这就是我现在所拥有的:
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) {
if ((child instanceof FloatingActionMenu ||
child instanceof FloatingActionButton) &&
(dependency instanceof Snackbar.SnackbarLayout ||
dependency instanceof AHBottomNavigation)) {
this.updateTranslation(parent, child, dependency);
}
return false;
}
@Override
public void onDependentViewRemoved(CoordinatorLayout parent, View child, View dependency) {
if ((child instanceof FloatingActionMenu ||
child instanceof FloatingActionButton) &&
dependency instanceof Snackbar.SnackbarLayout) {
this.updateTranslation(parent, child, dependency);
}
}
然而,正如我所说,当两种方法都被调用时(当小吃店超时时),位置会搞砸甚至有时应用程序崩溃。有人能帮助我吗?
答案 0 :(得分:2)
FloatingActionButton
的默认行为是对您的案例做出反应。尝试查看android.support.design.widget.FloatingActionButton.Behavior
,看看为什么FloatingActionButton
对Snackbar
作出反应。
从快速查看源代码,您应该覆盖:
public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency)
public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency)
public void onDependentViewRemoved(CoordinatorLayout parent, FloatingActionButton child, View dependency)
你可以看到,所有这些函数都会调用:
从此功能复制代码,它应该可以正常工作。