最近我自己偶然發現了這個問題,當滾動和顯示Snackback時,在第一個消失之前顯示的太多。我不得不找到一種方法來知道應用程序是否應該制定Snackbar。
我個人發現這個解決方案。
確實Snackbar本身並沒有爲它的狀態/可見性提供任何類型的監聽器,但是你仍然可以從Snackbar(getView();)中獲取視圖對象。從視圖對象中,您有機會使用各種方法來添加偵聽器。
要實現它,您必須走出常見的「一體式」Toast/Snackbar用法,因爲添加聽衆返回void。
我個人發現OnAttachStateChangeListener滿足我的需求。
用我的代碼刪除一個snipper,以防它可能對您有用。
Snackbar snack = Snackbar.make(getView(), "My Placeholder Text", Snackbar.LENGTH_LONG);
snack.getView().addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View v) {
canDisplaySnackbar = false;
}
@Override
public void onViewDetachedFromWindow(View v) {
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
canDisplaySnackbar = true;
}
}, 1000);
}
});
snack.show();
請注意,這只是我的實現我自己的問題,Handler與postDelayed Runnable可能甚至不適合你的情況。這只是給我一個關於我使用我已經擁有的片段的建議的總體思路。
此功能將是在支持設計庫 –