Подтвердить что ты не робот

Как установить время отображения тоста меньше, чем Toast.LENGTH_SHORT

Я хочу показать тост меньше, чем Toast.LENGTH_SHORT, так как я чувствую, что он занимает около 2 секунд. Я хочу отображать тост только за полсекунды.

А что такое временной интервал для Toast.LENGTH_SHORT и Toast.LENGTH_LONG?

4b9b3361

Ответ 1

Есть только два возможных значения:

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 записано, что

Это время может быть определено пользователем.

но я не могу найти способ сделать это.

Обновление: Здесь есть решение: Установить Toast Appear Length

Ответ 2

Это сработало для меня

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

Ответ 3

Смотрите предлагаемое нами решение здесь. В основном вы вызываете toast.cancel() после указанной задержки, которая меньше стандартной продолжительности тоста.

Ответ 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();

Надеюсь эта помощь.. Наслаждайся..!!!

Ответ 5

Для noobs я сделал простейшее решение - метод.

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

метод выше должен работать только во Фрагменте! Если вы хотите, чтобы он работал в Activity, замените getActivity() на getApplicationContext() в сообщении toast. Удачи разработчикам!

Ответ 6

он будет работать.


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

Ответ 7

Кажется, это работает для меня (установите продолжительность на все, что вы хотите):

mActivity.runOnUiThread(new Runnable() {
                    public void run() {
                        Toast toast = new Toast(mActivity
                                .getApplicationContext());
                        toast.setView(layout);
                        toast.setDuration(400);
                        toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
                        toast.show();
                    }
                });