我有兩個狀態之間的切換,點擊後顯示一個快餐欄與當前狀態。如果用戶快速地將狀態切換回第四個,則可能許多小吃店排隊等待,這些小吃店會彼此出現,指示其中一個狀態而另一個可能處於活動狀態。這可能會讓用戶感到困惑,所以我想我會在創建新的時候解僱另一個州的小吃店。檢測小吃店被解僱(而不是被禁止)
爲了達到此目的,我稱之爲舊快餐店的方法dismiss()
。這是一個問題:當我切換狀態時,即當我在舊的快餐欄和舊的快餐欄已經處於關閉動畫狀態時,即dismiss()
舊的和show()
10,dismiss()
調用動畫重新啓動,產生圖形故障(幾乎被解僱的舊小吃店被重新解僱)。請注意,舊小吃店的解僱動畫可由我自己發起(呼叫dismiss()
)或系統(超時後)發起。
解決方案是檢測快餐吧正在或即將被解僱。有Snackbar.Callback
類onDismissed()
方法,但該方法僅在之後調用解散動畫結束。我想在或之前之前檢測小吃店的解僱。類BaseTransientBottomBar
的布爾方法isShown()
也沒有用:快餐欄顯示直到解僱完成。
我也嘗試獲得小吃店的View
並添加OnLayoutChangeListener
,但只能聽到小吃店的創建,不會在解僱時使用。
我該如何檢測即將被解僱的小吃店?
這將檢測()'的小吃店仍然被解僱後,我打電話'解僱,這是問題的一部分。另一個問題是系統在自發超時後開始解僱。在這種情況下,我不會在舊快餐欄上調用'dismiss()',但系統會這樣。好的是我知道什麼時候,因爲我可以指定小吃店的持續時間。因此,通過這些信息,您的答案可以擴展到任何小吃店。甚至可以重寫'dismiss()'來包含這個檢查,但我不確定,因爲我現在無法檢查。我已編輯澄清這一點。 – Erik