首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snackbar堆栈总是只显示最后一个snackbar。

Snackbar堆栈总是只显示最后一个snackbar。
EN

Stack Overflow用户
提问于 2015-12-08 08:16:17
回答 2查看 4.4K关注 0票数 2

Snackbar.make(...).show()将只显示最后的快捷键,不像吐司,其他的零食条都不见了。

代码语言:javascript
复制
for(int i = 1;i < 11;i++) {  
   Snackbar.make(..., "number: " + i, Snackbar.LENGTH_SHORT).show();
}

有时,当snackbar应该显示在网络任务之后,而一个应该在网络任务之前显示时,秒状态栏就永远不会显示。

我在用坐标布局。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-08 08:21:48

请参考Android组件文档:

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

票数 0
EN

Stack Overflow用户

发布于 2015-12-08 08:46:17

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

代码语言:javascript
复制
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();
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34150982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档