Android:在协调器布局的行为中检测snackbar dismiss或timeout

时间:2016-09-13 13:20:31

标签: java android android-snackbar

我想根据一些出现和消失的零食栏来改变浮动动作按钮的位置。小吃店可以自行调整,但它不适用于手工解雇的零食吧。我想在后一种情况下在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);
        }
    }

然而,正如我所说,当两种方法都被调用时(当小吃店超时时),位置会搞砸甚至有时应用程序崩溃。有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)