繁体   English   中英

如何在Android中堆叠烤面包?

[英]How to stack toasts in Android?

一位朋友正在为学校编写一个Android应用,我正在帮助他。 我有一个小时无法解决一个问题。

他正试图互相展示2个吐司,但我们无法堆叠它们,甚至无法同时显示它们。 我们所看到的只是第二个吐司。 我们尝试将其显示的时间比第一个显示的时间短,以查看它是否隐藏在第二个之后。 然后,我们将第二个放置在屏幕中间,但这也没有帮助。 他说这只对他的朋友有用(我无法确认,但也不能用谷歌搜索出现相同问题的任何人)

Toast t1 = Toast.makeText(getApplicationContext(), "first", Toast.LENGTH_LONG);
t1.show();

Toast t2 = Toast.makeText(getApplicationContext(), "second", Toast.LENGTH_SHORT);
t2.setGravity(0, 50, 0);
t2.show();

我们完全错过了什么吗? 它甚至设计为同时显示两个烤面包,还是将它们堆叠在一起?

使用postDelayed()。 显示第一个Toast,一段时间后显示第二个:

final Handler handler = new Handler();


    handler.postDelayed(
            () -> //show the toast here,
            1200);
        handler.postDelayed(() -> //show second toast,
     2400);
          }

https://developer.android.com/reference/android/os/Handler

试试小吃吧(它们看起来也更好!)

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);
    mSnackbarList.add(snackbar);
    if(mSnackbarList.size() == 1)
        displaySnackbar(snackbar);
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM