34

とにかく、トースト通知に指定された時間だけ表示するように指示できますか?通常のトーストメッセージよりも一般的に短いです。

4

7 に答える 7

103

標準のトースト期間よりも短い特定の遅延の後にtoast.cancel()を呼び出すことで、これに対する解決策を見つけました。

        final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
        toast.show();

        Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
               @Override
               public void run() {
                   toast.cancel(); 
               }
        }, 1000);
于 2012-03-15T07:22:17.447 に答える
6

いいえ。

あなたは次のようなことをすることができます:

Toast a = Toast.makeText(this, "a", Toast.LENGTH_LONG);
a.setDuration(300);

しかし、それ自体は表示されません。

期間はまたはのいずれかである必要がありLENGTH_SHORTますLENGTH_LONG

于 2010-09-23T03:01:30.963 に答える
4

これを試して

final Toast toast = Toast.makeText(getBaseContext(), "YOUR MESSAGE",Toast.LENGTH_SHORT);
            toast.show();
            new CountDownTimer(10000, 1000)
            {
                public void onTick(long millisUntilFinished) {toast.show();}
                public void onFinish() {toast.cancel();}
            }.start();

この助けを願っています..お楽しみください..!!!

于 2013-12-04T11:17:29.070 に答える
1

ここで説明するように、ハックを使用してより長い期間を設定できます

于 2011-11-06T17:00:35.313 に答える
0

//それを試してみてください

    public void myToast(String message) {
    LayoutInflater myInflator = getLayoutInflater();
    View myLayout = myInflator.inflate(R.layout.custom_layout,
            (ViewGroup) findViewById(R.id.toastlayout));
    TextView myMessage = (TextView) myLayout.findViewById(R.id.label);
    myMessage.setText(message);
    Toast toast = new Toast(getApplicationContext());
    toast.setView(myLayout);
    toast.setDuration(400);
    myMessage.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL
            | Gravity.CENTER_VERTICAL);
    toast.show();
}
于 2012-10-16T14:45:09.260 に答える
0

標準のAndroidToastクラスは、Toastを呼び出すときにToast.LENGTH_SHORTまたはToast.LENGTH_LONGパラメーターのみを受け入れるようにコーディングされています。これらのパラメーターの値はそれぞれ0と1であり、setDuration()を呼び出すときにミリ秒の値を受け入れません。SuperToastsライブラリのクラスの使用を検討するのとは異なる期間、トーストを表示する必要がある場合。ライブラリのSuperToastクラスは、標準のAndroid Toastクラスを模倣しており、期間パラメーターとして任意のミリ秒値を使用できます。これらのトーストの効果が長引くため、このクラスを使用して、Androidトーストの最大ストック長よりも長いトーストを表示することはお勧めしません。SuperActivityToastを使用することをお勧めしますトーストはアクティビティとともに破棄されるため、トーストメッセージをアクティビティ/フラグメントに表示するクラス。メッセージが長引く可能性はありません。このクラスを使用するには、新しいオブジェクトを作成します。

SuperActivityToast superActivityToast = new SuperActivityToast(this);  
superActivityToast.setDuration(SuperToast.DURATION_SHORT); 
// setDuration(); can also accept millisecond values
// superActivityToast.setDuration(1000);  
superActivityToast.setText("Hello world!");  
superActivityToast.show();  

または、静的メソッドを使用します。

SuperActivityToast.createDarkSuperActivityToast(this, "Hello world!", SuperToast.DURATION_SHORT).show();  

ライブラリで使用できるカスタマイズオプションもたくさんあります。Wikiページをチェックしてください。

于 2013-12-11T18:37:26.140 に答える
-1

選択ごとに時間を設定する別の方法は次のとおりです。

public void showMsg(String msg, final long duration) {
    final Toast toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG);
    toast.show();
    Thread t = new Thread() {
        public void run(){
            try {
                sleep(duration);
                toast.cancel(); 
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            finally { }
        }
    };
    t.start();
}

注:期間はミリ秒単位で指定されます。

于 2013-12-18T06:06:57.383 に答える