現在、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
トーストが既にビューを離れている (つまり、トーストがキャンセルされた) ことを意味します。
トーストの時間を長くするための解決策をオンラインでいくつか見つけましたが、トーストがユーザーによって閉じられた場合に閉じたままにする方法は見つかりませんでした。したがって、通常のトースト機能を維持するために、上記をつなぎ合わせました。
どう考えているか教えてください!