最近我自己偶然发现了这个问题,当滚动和显示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可能甚至不适合你的情况。这只是给我一个关于我使用我已经拥有的片段的建议的总体思路。
此功能将是在支持设计库 –