答案 0 :(得分:6)
也许在活动中覆盖dispatchTouchEvent
。
private Snackbar mSnackbar;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (mSnackBar != null && mSnackbar.isShown()) {
Rect sRect = new Rect();
mSnackbar.getView().getHitRect(sRect);
//This way the snackbar will only be dismissed if
//the user clicks outside it.
if (!sRect.contains((int)ev.getX(), (int)ev.getY())) {
mSnackbar.dismiss();
mSnackbar == null;
}
}
}
return super.dispatchTouchEvent(ev);
}
感谢Eme的评论,以改善这一点。 (我还没有测试过这个新编辑的经文。)
答案 1 :(得分:1)
正如您在问题中提供的指南所述:
或其他地方的用户互动(例如召唤新的表面或活动)
在显示小吃栏时,没有提及滑动或点击的任何内容。
换句话说,只要用户保持相同的活动,小吃栏应该在超时后消失,或者如果用户将其删除掉。
此外,我查看了谷歌的Gmail应用程序,如果用户在同一屏幕上滑动,小吃店也不会消失。