1

現在、Toast には次の 2 つの期間しか存在しません:Toast.LENGTH_SHORTおよびToast.LENGTH_LONG...

しかし、Android でトーストの時間を長くしたい場合はどうすればよいでしょうか?

これが私が思いついた、共有したいハックです。

public void createToast(Context context, String s) {
    int duration = Toast.LENGTH_LONG;
    final Toast toast = Toast.makeText(context, s, duration);

    toast.show();

    new CountDownTimer(5000, 1000) 
    {
        public void onTick(long millisUntilFinished) {
            if (toast.getView().getWindowToken() != null)
                toast.show();
            else
                cancel();
        }
        public void onFinish() {
            if (toast.getView().getWindowToken() !=null)
                toast.show();
            else
                cancel();
        }

    }.start();
}

より長いトーストが必要な場合は、CountDownTimer.

行に注意してください

if (toast.getView().getWindowToken !=null)

トーストの が null の場合、windowTokenトーストが既にビューを離れている (つまり、トーストがキャンセルされた) ことを意味します。

トーストの時間を長くするための解決策をオンラインでいくつか見つけましたが、トーストがユーザーによって閉じられた場合に閉じたままにする方法は見つかりませんでした。したがって、通常のトースト機能を維持するために、上記をつなぎ合わせました。

どう考えているか教えてください!

4

2 に答える 2