Intereting Posts
Как я могу выполнить запрос к базе данных SQLite с двумя условиями? Использование другого manifestPlaceholder для каждого варианта сборки Почему Butterknife @Bind не работает в выпуске (после proguard) Parse Google плюс логин Отправлять трансляцию только на конкретную активность Как использовать Bitmap в качестве значка уведомления Проблема с appwidget appWidgetIds (реальные и фантомные экземпляры виджета) Изменение порта по умолчанию (т.е. 5037), на котором запускается сервер adb Android: почему собственный код намного быстрее, чем Java-код Получить общее значение общих настроек Android в действии / нормальном классе QR-сканер с ZXing и ZBar не читает коды низкого качества на картах Отправить данные (ArrayList) из Activity to Fragment Скопировать папки в / data / data на SDCard и наоборот Как обмениваться файлами с любым путем с помощью FileProvider? Java.Lang.RuntimeException, setParameters не удалось выполнить в версии для Android (4.1.1)

Android Toast перемещается по экрану

В моем приложении Android отображаются несколько сообщений Toast. Недавно я установил его на Galaxy S6, работая под управлением Android 5.1.1, и заметил, что сообщения отображаются первоначально по центру экрана, затем они перемещаются в правильное положение (около дна, если нет гравитации), затем вернитесь к Первоначальное положение перед угасанием.

Context context = getApplicationContext(); String newMsg = getString(R.string.wild_card_msg); Toast mToast = Toast.makeText(context, newMsg, Toast.LENGTH_LONG); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); 

Обновить:

  • Я обновил библиотеки поддержки, а также установил компиляцию sdk и target sdk в новейший API. Это не решило проблему
  • Я удалил все вызовы .setGravity (). Без изменений.
  • Я заметил, что сообщения Toast ведут себя должным образом при первом выполнении после установки (будь то в режиме отладки USB или при загрузке из PlayStore), но проблема повторится при последующих запусках (все).
  • Я также обнаружил, что мои сообщения Toast немедленно исчезают, если я касаюсь экрана (где угодно). Я думал, что на дисплеях Toast не может влиять взаимодействие пользователя.

У кого-то еще есть эта проблема, знаете, как ее исправить или знаете обходное решение?

Обратите внимание, что я принял ответ Ника, предлагая snackBar как обходной путь.

На ваш вопрос задавали вопрос об исправлении или обходном пути . Самое простое решение (на мой взгляд) – также лучший вариант, потому что он переводит вас на использование более современных компонентов: перейдите в закусочную.

Простая закуска:

 //on a fragment you can simply use getView(), otherwise give it the root view of your //layout so that the snackbar can use it to find context Snackbar.make(getView(), "The toast text", Snackbar.LENGTH_SHORT).show(); 

Это совместимо с библиотекой дизайна поддержки.

Это закусочная:

Введите описание изображения здесь

Некоторые библиотеки поддержки / дизайна, которые могут быть включены в

 compile 'com.android.support:design:23.1.1' compile 'com.android.support:support-v4:23.1.1' compile 'com.android.support:appcompat-v7:23.1.1' 

Это из-за настроенной версии Android, которую вендоры развертывают с помощью своих продуктов. Это верно и для анимации активности. Вы можете добиться желаемого поведения на всех устройствах, расширив класс Toast и предоставив свою собственную анимацию и стиль или используя открытый исходный код Библиотека для отображения тостов-сообщений, для действий, настраивающих настраиваемую анимацию для действий, создает постоянную анимацию на всех устройствах.

Попробуйте этот простой тост

 Toast.makeText(getApplicationContext(),"Your message", Toast.LENGTH_SHORT).show();