如何在Android中堆叠吐司?

时间:2018-06-06 19:49:49

标签: java android android-toast

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

他试图在彼此之后展示2个祝酒词,但我们无法叠加它们,甚至不能同时展示它们。我们所看到的只是第二 Toast。 我们尝试将它显示的时间比第一次短,看看它是否隐藏在第二个后面,但事实并非如此。然后我们将第二个放在屏幕中间,但它也没有帮助。他说它只适用于他的朋友(我无法证实这一点,但也无法解决任何有相同问题的人)

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();

我们完全错过了什么吗?它是否设计为同时显示两个祝酒词,或者叠加它们?

2 个答案:

答案 0 :(得分:1)

使用postDelayed()。显示第一个Toast,然后显示第二个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

答案 1 :(得分:-1)

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

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();
}