Snackbar堆栈将始终只显示最后一个快餐栏

时间:2015-12-08 08:16:18

标签: android android-design-library android-snackbar

Snackbar.make(...).show()只显示最后一个小吃吧,而不像其他小吃店的烤面包一样。

for(int i = 1;i < 11;i++) {  
   Snackbar.make(..., "number: " + i, Snackbar.LENGTH_SHORT).show();
}

有时当小吃栏应该在网络任务之后显示并且应该在网络任务之前显示时,秒小吃栏永远不会显示。

我正在使用coordinatorlayout。

2 个答案:

答案 0 :(得分:1)

请参阅Android组件文档:

  

Snackbars会自动从屏幕上超时。出于可用性原因,snackbars不应包含访问核心用例的唯一方法。它们不应该是持久的或堆叠,因为它们高于屏幕上的其他元素(Source

答案 1 :(得分:0)

我现在实现了自己的队列:

protected ArrayList<Snackbar> mSnackbarList = new ArrayList<>();

protected Snackbar.Callback mCallback = new Snackbar.Callback() {
    @Override
    public void onDismissed(Snackbar snackbar, int event) {
        mSnackbarList.remove(snackbar);
        if (mSnackbarList.size() > 0)
           displaySnackbar(mSnackbarList.get(0));
    }
};

public void addQueue(Snackbar snackbar){
    setLayoutParams(snackbar);
    snackbar.setCallback(mCallback);
    boolean first = mSnackbarList.size() == 0;
    mSnackbarList.add(snackbar);
    if(first)
        displaySnackbar(snackbar);
}

public void displaySnackbar(Snackbar snackbar){
    snackbar.show();
}