web-dev-qa-db-ja.com

Toast表示時間をToast.LENGTH_SHORTより短く設定する方法

Toast.LENGTH_SHORTよりも少ないトーストを表示したいのですが、2秒ほどかかると感じています。トーストを0.5秒間だけ表示したい。

また、Toast.LENGTH_SHORTとToast.LENGTH_LONGの時間間隔は何ですか?

24
Zoombie

可能な値は2つのみです。

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

他の値を設定しても機能しません。期間が1に等しくない場合(Toast.LENGTH_LONG)、期間はSHORT_DELAY(2秒)になります。

long delay = immediate ? 0 : (r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY);

Toastのソースには、

この時間はユーザーが定義できます。

しかし、私はこれを行う方法を見つけることができません。

更新:ここに解決策があります: トースト表示長の設定

24
Sergey Glotov

これは私のために働いた

final Toast toast = Toast.makeText(getApplicationContext(), "The following message will disappear in half second", Toast.LENGTH_SHORT);
    toast.show();

    Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
           @Override
           public void run() {
               toast.cancel(); 
           }
    }, 500);
29
Emran Hamza

私の提案した解決策を参照してください こちら 。基本的に、標準のトースト期間より短い指定された遅延の後にtoast.cancel()を呼び出します。

10
noypiscripter

これを試して

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

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

3
Virag Brahme

初心者の場合、私は最も簡単な解決策-メソッドを作成しました。

public void showToastMessage(String text, int duration){
        final Toast toast = Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT);
        toast.show();
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                toast.cancel();
            }
        }, duration);
}

以下もインポートする必要があります。

import Android.os.Handler;
import Android.widget.Toast;

たとえば、このメソッドを呼び出すことができます。

showToastMessage("your noob", 1000);

上記のメソッドはフラグメントでのみ動作するはずです!アクティビティで動作させたい場合は、getActivity()トーストメッセージのgetApplicationContext()。開発者の幸運を祈ります!

1
Erikas
public void showMyToast(final Toast toast, final int delay) {
    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            toast.show();
        }
    }, 0, 1000);
    new Timer().schedule(new TimerTask() {
        @Override
        public void run() {
            toast.cancel();
            timer.cancel();
        }
    }, delay);
}

//使用方法

Toast toast=Toast.makeText(MainActivity.this, "MyToast Test", Toast.LENGTH_LONG);
            showMyToast(toast, 1000);
0
Zoom ChipIn

それが動作します。


   public void toastMessage(final String message) {
    this.runOnUiThread(new Runnable() {
        public void run() {
            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(100);
            myMessage.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL
                    | Gravity.CENTER_VERTICAL);
            toast.show();
        }
    });
}
0
Emran Hamza