トーストの長さはLENGTH_LONGとLENGTH_SHORTです


91

LENGTH_LONGとLENGTH_SHORTの正確な継続時間がミリ秒(ms)で必要です。また、LENGTH_LONGを使用したトーストメッセージの持続時間が、どの電話でも、どのAPIバージョンでも同じ持続時間になるかどうかも知る必要があります。

誰かが期間がどこで定義されているか知っていますか?つまり、ミリ秒で定義されていることを意味します。LENGTH_LONGが値1のint constであることはわかっていますが、実際に定義されている期間がどこにあるのかわかりませんでした。


setDuration()でMilliseocndsを指定しようとしましたか?ドキュメントによると、ユーザーによる構成が可能であるとのことですが、この問題については具体的ではありません
Konstantin Pribluda

回答:


181

ここで答え。あなたが言及したようなToast.LENGTH_SHORTおよびToast.LENGTH_LONGMSではないが、0または1。

実際の期間は次のとおりです。

private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds

14

Toast.LENGTH_SHORTそしてToast.LENGTH_LONGちょうどフラグです。これらのフラグが定義さ
れている公式のandroidソースはこちらです。

public class NotificationManagerService extends SystemService {

    static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT;
    /** Amount of time (in milliseconds) a toast window can be shown. */
    //public static final int TOAST_WINDOW_TIMEOUT = 3500; // 3.5 seconds
    static final int SHORT_DELAY = 2000; // 2 seconds

    private void scheduleDurationReachedLocked(ToastRecord r)
    {
       mHandler.removeCallbacksAndMessages(r);
       Message m = Message.obtain(mHandler, MESSAGE_DURATION_REACHED, r);
       int delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
       //....
       mHandler.sendMessageDelayed(m, delay);
     }
}

1
:今、それは次のように変更された static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT; static final int SHORT_DELAY = 2000; // 2 seconds still the same
Mayank Sharmaの

7

トーストの時間を変更することはできません。しかし、代わりの方法を探していて、トーストでこれを行う必要がある場合は、これを試すことができます。

次の行に別の複製トーストを入れます

例:

Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();

ユーザーは、2つのトースト間の移行の変化を検出しません。

ありがとう。


3
以前の返信では「実行不可能」と明記されているため、代替方法を提供し、それも明記しました。あなたが理解することを願って。私は今検索したところ、同じ種類の質問がそこにあり、いくつかの選択肢が選択肢であるという回答を調べました。しかし、私は彼らの反対票を見つけません。不可能だと言われるよりも、代わりを見つける方がいいのでは?これが理にかなっているといいのですが。 Android Toastは「Toast.LENGTH_LONG」より長くできますか?
PasinduJay 2016年

3

setDurationのアクションの例で、期間のオーバーライドを設定する必要があります。

int s = 6000; // milisegundo    
Snackbar.make(coordinatorLayout, "This is my Snackbar", Snackbar.LENGTH_LONG).setDuration(s)
.show();

2

Toast.javaクラスでサポートされているメソッドsetDuration()を使用しないのはなぜでしょうか。

 /**
 * Set how long to show the view for.
 * @see #LENGTH_SHORT
 * @see #LENGTH_LONG
 */
public void setDuration(@Duration int duration) {
    mDuration = duration;
}

次のint値のみを割り当てることができます:LENGTH_SHORTまたはLENGTH_LONG。
Gabriele Mariotti

0

試行錯誤私が発見したToast.LENGTH_LONG非常に近くに続く2500ms

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.