我有两个状态之间的切换,点击后显示一个快餐栏与当前状态。如果用户快速地将状态切换回第四个,则可能许多小吃店排队等待,这些小吃店会彼此出现,指示其中一个状态而另一个可能处于活动状态。这可能会让用户感到困惑,所以我想我会在创建新的时候解雇另一个州的小吃店。检测小吃店被解雇(而不是被禁止)
为了达到此目的,我称之为旧快餐店的方法dismiss()
。这是一个问题:当我切换状态时,即当我在旧的快餐栏和旧的快餐栏已经处于关闭动画状态时,即dismiss()
旧的和show()
10,dismiss()
调用动画重新启动,产生图形故障(几乎被解雇的旧小吃店被重新解雇)。请注意,旧小吃店的解雇动画可由我自己发起(呼叫dismiss()
)或系统(超时后)发起。
解决方案是检测快餐吧正在或即将被解雇。有Snackbar.Callback
类onDismissed()
方法,但该方法仅在之后调用解散动画结束。我想在或之前之前检测小吃店的解雇。类BaseTransientBottomBar
的布尔方法isShown()
也没有用:快餐栏显示直到解雇完成。
我也尝试获得小吃店的View
并添加OnLayoutChangeListener
,但只能听到小吃店的创建,不会在解雇时使用。
我该如何检测即将被解雇的小吃店?
这将检测()'的小吃店仍然被解雇后,我打电话'解雇,这是问题的一部分。另一个问题是系统在自发超时后开始解雇。在这种情况下,我不会在旧快餐栏上调用'dismiss()',但系统会这样。好的是我知道什么时候,因为我可以指定小吃店的持续时间。因此,通过这些信息,您的答案可以扩展到任何小吃店。甚至可以重写'dismiss()'来包含这个检查,但我不确定,因为我现在无法检查。我已编辑澄清这一点。 – Erik