- Всплывающие сообщения Toast
- Конструктор Toast
- Методы класса Toast
- Пример использования Toast
- Листинг activity_main.xml
- Изображение для Toast
- Листинг toast.xml
- Листинг метода Toast
- Старт примера
- как отобразить всплывающую подсказку в android?
- 8 ответов
- Android Studio: диалоговое окно AlertDialog
- С одной клавишей
- Особенности создания и пример с 2 клавишами
- Метод onCreateDialog в AlertDialog
- AlertDialog с перечнем
- AlertDialog с переключателями
- AlertDialog с флажками
- Автоматическое закрытие окна
- AlertDialog с рейтингом (проблемный пример)
- Следует избегать ProgressDialog
Всплывающие сообщения Toast
Разработчик Android приложения может «программно» создавать и открывать в интерфейсе окна всплывающие сообщения Toast. Объект Toast нельзя описа́ть в каком-либо файле в формате xml, Toast можно только сформировать в коде java. Приложение сохраняет свою работоспособность для пользователя при появления сообщения Toast. Как правило, всплывающее уведомление Toast используется для представления коротких текстовых сообщений. Например, при нажатии на кнопку формирования «Заказа» всплывает сообщение с текстом «Товар не выбран». Через пару секунд сообщение исчезает. Это и есть Toast сообщение.
Toast является View компонентом с коротким сообщением, появляющимся «поверх» интерфейса приложения. Объект Toast не может получить фокус.
Конструктор Toast
Конструктор класса Toast в качестве параметра получает контекст приложения :
Поскольку класс активности Activity является наследником Context, то его можно использовать в качестве параметра. Например, MainActivity.this.
Вы можете столкнуться с непонятным поведением Toast, когда текст не будет выравниваться, сокращаться и т.д. Это может быть связано с тем, что Ваша активность использует определённую тему или стиль, которые вызывают такой побочный эффект. Поэтому, вместо MainActivity.this используйте метод getApplicationContext().
А как быть, если окно, в котором вызывается Toast не являются потомком контекста Context? Это может случиться при использовании Toast в диалоговых окнах, которые не наследуют свойства класса Context. В этом случае можно вместо getApplicationContext() вызывать метод getBaseContext().
Методы класса Toast
В следующем списке представлены часто используемые методы и константы класса Toast. C полным перечнем всех доступных (public) методов Вы можете познакомиться здесь.
- static Toast makeText (Context context, int resId, int duration);
статический метод создания всплывающего сообщения Toast; - void setDuration(int duration);
определение продолжительности представления сообщения;
можно использовать константы для определения продолжительности представления сообщения :
– LENGTH_SHORT = 2000 мс (по умолчанию);
– LENGTH_LONG = 3500 мс; - void setGravity(int gravity, int xOffset, int yOffset);
позиционирование сообщения. - void setText(int resId);
определение текста сообщения. - void setView(View view);
определение View компонента для отображения во всплывающем сообщении. - void show();
отображение всплывающего сообщения.
Пример использования Toast
Рассмотрим пример использования класса Toast для формирования различных типов сообщений :
- обычное сообщение Toast;
- сообщение Toast с позиционированием;
- сообщение Toast с изображением;
- сообщение Toast с View компонентом.
Для реализации данного примера определим интерфейс приложения в виде 4-х кнопок, к которым подключим обработчик события (метод Toast). В методе Toast для каждой кнопки отдельно будет формироваться сообщение Toast.
Листинг activity_main.xml
В следующем листинге описан интерфейс приложения, включающий четыре кнопки. К каждой кнопке подключен обработчик (метод Toast) в атрибуте «android:onClick». Интерфейс не локализован (атрибут «android:text»). В качестве шаблона интерфейса выбран LinearLayout.
Изображение для Toast
В контент двух типов сообщений Toast будем вставлять изображение пустой тележки (128×128). Загрузить изображение в директорию res/drawable модуля можно через буфер обмена с использованием горячих клавишей Ctrl+C, Ctrl+V.
Листинг toast.xml
Для четвертого типа сообщения Toast в примере необходимо описать интерфейс в ресурсном XML файле. Для этого создадим файл res/layout/toast.xml со следующим контентом. Интерфейс сообщения включает титульную строку (TextView), изображение пустой тележки (ImageView) и краткое сообщение (TextView).
Листинг метода Toast
В открытый (public) метод Toast в качестве пареметра передается View компонент нажатой кнопки. При нажатии на первую кнопку вызывается статический метод makeText класса Toast. Всплывающее сообщение будет представлено в нижней части экрана. При нажатии на вторую кнопку Toast сообщение позиционируется методом setGravity.
Особый интерес представляет обработчики нажатий на третью и четвертую кнопки. При нажатии на третью кнопку сначала создается и позиционируется Toast сообщение. После этого создается контейнер ImageView, в который загружается изображение, и далее в шаблон разметки Toast (LinearLayout) добавляется контейнер с изображением.
При формировании 4-го сообщения используется собственный настраиваемый (разработчиком) дизайн разметки уведомления, описанный в файле (toast.xml). Для чтения разметки из ХМL-файла используем класс LayoutInflater и один из его методов : getLayoutInflater() или getSystemService(), возвращающие объект типа LayoutInflater. Затем вызовом метода inflate() формируем объект View этой разметки, который передает Toast сообщению.
Старт примера
Запустите модуль на выполнение и понажимайте кнопки для просмотра всплывающих сообщений. Если Вы всё сделали правильно, то должны увидеть интерфейс своего приложения похожий на следующие скриншоты. На левом скриншоте представлено Toast сообщение, созданное при нажатии на 3-ю кнопку, на правом – сообщение, созданное при нажатии на 4-ю кнопку.
Источник
как отобразить всплывающую подсказку в android?
Я хочу отобразить всплывающую подсказку (представление QuickAction), когда я перемещаю курсор на представление. Кто — нибудь может привести мне простой пример? всплывающая подсказка будет содержать только текстовое значение.
8 ответов
Android поддерживает «Tool-tip» только для кнопок ActionBar с Android 4.0. Но, как уже упоминал Jaguar, подсказки в Android не имеют большого смысла, так как нет концепции зависания.
из Android 4.0 обычный текст заголовка (который вы установили в xml-файле или с помощью кода) появится, если вы сделаете длинный щелчок по кнопке. Но если на экране достаточно места, он будет виден в ActionBar все время рядом со значком.
Если вы хотите иметь это для пользовательского представления, вам нужно реализовать его самостоятельно, добавив LongClickListener на ваш взгляд и показать Toast продолжительное нажатие:
конечно, вы должны использовать ресурс для строки, а не жестко закодированные строки.
возможно, используя myView.setTooltipText(CharSequence) (от уровня API 26) или TooltipCompat (до уровня API 26) является дополнительной опцией:
вспомогательный класс, используемый для эмуляции поведения <@link View#setTooltipText (CharSequence)>до уровня API 26.
редакция 26.0.1 библиотеки поддержки добавлена поддержка подсказки (небольшие всплывающие окна с описательным текстом) для представлений и пунктов меню.
использовать говорится settooltiptext чтобы установить текст подсказки, который будет отображаться в небольшом всплывающем окне рядом с представлением.
- при длительном щелчке, если он не обрабатывается иначе (с помощью OnLongClickListener или контекстного меню).
- при наведении, после короткая задержка с момента остановки указателя
- открыть сборки.gradle файл для вашего приложения.
- убедитесь, что раздел репозитории включает раздел maven с «https://maven.google.com» конечная точка.
добавить библиотеку поддержки раздел зависимости.
начиная с Android API 14+, есть событие для висения. Вы можете сделать,
и слушать MotionEvent s, таких как ACTION_HOVER_ENTER и ACTION_HOVER_EXIT , вместо onLongClick .
Android не имеет подсказок. Это сенсорный интерфейс. Текущие сенсорные датчики обычно не могут обнаружить зависание таким образом, чтобы были полезны подсказки.
нет понятия «зависания» на сенсорном экране, но вы можете установить LongClickListener для Вашего взгляда, и имейте тост появиться после долгого нажатия.
Если вам нужно показать подсказку для любого вида, вы можете использовать CheatSheet util класс от Романа Нурика. (Использует Toast и дополнительно content description для отображения всплывающей подсказки.)
Android helper class для показа шпаргалок (всплывающих подсказок) только для значков Элементы пользовательского интерфейса при длительном нажатии. Это уже поведение платформы по умолчанию для icon-только элементы панели действий и вкладки. Этот класс предоставляет следующее поведение для любого другого такого элемента UI
на основе GregoryK это, Я создал новый класс ImageButton-см. код ниже. Чтобы использовать его, все, что вам нужно сделать, это заменить ImageButton в ваших макетах с com.yourpackage.ImageButtonWithToolTip С android:contentDescription атрибут (так как это текст, который будет показан в подсказке).
вы можете использовать тот же подход для расширения и другие мнения — например, Button .
Источник
Android Studio: диалоговое окно AlertDialog
Пользователям часто нужны напоминания, которые будут указывать на выбор или ошибки. Для этого в Android есть специальная встроенная программа, которая гибко настраивается под любые задачи – android studio всплывающее окно. При помощи сервиса удается экономить память и другие ресурсы, создавая заголовки, информационный массив, клавиши и прочее.
Что такое Android Studio? Это специальная среда IDE, которая позволит работать, настраивать и управлять операционной системой Android.
С одной клавишей
Для начала следует разобраться с легким примером, в котором используется только 1 клавиша. Первым делом формируется объем AlertDialog.Builder, передающий в виде примера контекст. После в работу входит техника Builder и формируется для всплывающего меню заголовок, используя команду setTitle(). Для текста подходит способ setMessage(), установка значка формируется в виде setIcon(). Чтобы установить клавишу, применяется техника setNegativeButton(), а обеспечить возможность нажатия на сделанную кнопку поможет комбинация cancel(). Обращать внимание на название техник не нужно, они не несут большой нагрузки.
Для исключения закрытия диалогового окна при помощи кнопки возврата на смартфоне, применяется метод setCancelable() со значением false. В самом конце требуется добиться всплывания окна при помощи команды show(). Например:
Особенности создания и пример с 2 клавишами
На основе кода видно пример формирования диалогового окна с наличием 2 клавиш для использования:
Общие параметры кода не меняются, прежними будут настройки, клавиши и обработка информации. Доступно добавлять в AlertDialog только по 1 клавише любого вида, поэтому в окне будет максимум 3 кнопки для использования.
Для каждого показателя применяются методы со вставкой set. Button, принимающие за основу подпись и внешний вид DialogInterface.OnClickListener, характеризующий операцию при касании. Чтобы исключить закрытие с помощью клавиатуры смартфона, в коде прописывается setCancelable() со значением false или true. Чтобы результат работы отобразился на экране, применяется способ show().
AlertDialog – гибкая программа для настроек. Всплывающее окно бывает самым простым с классическим выбором «Да» и «Нет», но при помощи перечня, флажков или переключателей, конструкция будет усложняться.
Метод onCreateDialog в AlertDialog
Чтобы при помощи android studio alertdialog сохранило состояние, потребуется применять способ активности onCreateDialog(). Для начала выполняются описанные этапы, а для показа работы указывается builder.create(). Пример кода:
Поскольку в одном приложении применяется сразу несколько типов диалоговых окон, потребуется сделать отдельный идентификатор, который поможет вызывать конкретный диалог. Работая на новой ОС Android видно, что метод показа всплывающего окна перечеркнут, поскольку он устаревший. С версии 3.0 пользуются техникой DialogFragment. Для проекта идентификатором выступает IDD_THREE_BUTTONS.
AlertDialog с перечнем
Некоторым пользователям важно использовать окна, в которых будет список с несколькими строками на выбор. Они заменяют клавиши, и для этого в коде применяют способ setItems(). В нем указывается часть информации для вывода на экран и dialogInterface.OnClickListener, позволяющий выбрать действие, во время выбора конкретной части из перечня. Для этого готовый код дополняется еще одной клавишей:
После выполнения проекта android studio alertdialog со списком, проводится запуск для проверки. Во время контакта с клавишей должно быть окно AlertDialog, в котором содержится перечень из 3 наименований, помогающий выбрать имя питомца. После касания одного выплывает сообщение, демонстрирующее выбранного питомца.
AlertDialog с переключателями
Всплывающее меню можно сделать с переключателями RadioButton. Для этого применяется техника setSingleChoiceitems() взамен способу setItems(). Если при помощи android studio диалоговое окно делается внутри onCreateDialog(), тогда операционная система Андроид будет управлять состоянием перечня при помощи переключателей. На момент активной работы, меню при дальнейших вызовах сохранит в памяти, ранее выбранные строки.
Создавая проект нужно обратить внимание на детали. Когда выбирается переключатель, всплывающее окно не будет закрываться, нужно заранее продумать этот момент и технику закрытия. К примеру, возможно добавить клавишу. Вторым фактором при использовании способа setSingleChoiceitems выступает то, что для первого значения применяется полный код и настройки, а для второго нужно применить целочисленный показатель индекса, оставляя его включенным всегда при всплывании окна. Значение «-1» применяется для отключения переключателей во время старта окна.
AlertDialog с флажками
Описанные переключатели возможно заменить флажками, которые называются CheckBox. Чтобы получить доступ к выбору параметров, необходимо применить код setMultiChoiceItems(). Визуально изменений почти нет, а детали можно просмотреть в самом коде:
Первое значение в способе setMultiChoiceItems() выступает массивом настроек для перечня с флажками.
Второе считается булевым массивом состояний, заданных по стандартным настройкам при вызове окна. К примеру, чтобы отметить флажком вторую строку, а другие оставить без изменений, используется код:
По аналогии с переключателями для всплывающего меню с флажками потребуется применять клавиши для закрытия меню. В запущенном приложении сохраняется предыдущий параметр состояния.
Автоматическое закрытие окна
Обычные сообщения класса Toast закрываются через 1-2 секунды, но диалоговые окна не будут самостоятельно закрываться, пока пользователь не сделает манипуляцию.
При использовании таймера можно убрать ограничение, добавляя клавишу автоматического закрытия. Для этого используется специальный код.
AlertDialog с рейтингом (проблемный пример)
Применение метода RatingBar для диалогового окна приводит к некорректной работе кода. На дисплее смартфона всегда всплывает 6 звездочек, невзирая на заданные параметры. Если перевернуть приложение в альбомную ориентацию, то будет показано от 7 звездочек, исходя из диагонали.
Для решения проблемы нужно элемент RatingBar поместить в макете wrap_content. Рекомендуется сделать отдельную разметку, с подключением ее к всплывающему окну. Для открытия доступа к настройкам элемента используется метод View.findViewById().
Следует избегать ProgressDialog
Android studio dialog – стандартный класс для всех всплывающих окон. ProgressDialog – это расширение, но оно тоже имеет специальные клавиши, а также индикатор выполненных задач. Но если потребуется показать процесс загрузки или любой другой информации, тогда используется отдельная инструкция по дизайну, что позволяет применять расширение в созданном макете.
Все классы позволяют установить стиль, структуру диалогового окна, но для этого применяется DialogFragment, как отдельный элемент. Эта группа дает возможность работы со всеми функциями, которые требуются для формирования всплывающих окон, их дизайном, вместо вызова способов к объекту Dialog.
Применение в работе для управления DialogFragment позволяет добиться корректной обработки жизненных событий в определенное время, поскольку можно задать дополнительные клавиши «Назад» или повернуть экран. Еще класс позволяет повторно использовать интерфейс в виде встраиваемого элемента высшего уровня, по аналогии с классом Fragment. Это требуется при необходимости разного отображения окон на экранах больших и малых устройств.
В результате того, что описанный класс первоначально есть в Android 3.0, в нем будет описано применение класса DialogFragment, которое есть в Библиотеке поддержки. После ее добавления можно воспользоваться самим классом и другими API на гаджетах под управлением ОС Android 1.6 и выше. Если применяются вспомогательные библиотеки, рекомендуется провести импорт класса android.support.v4.app.DialogFragment, но не использовать android.app.DialogFragment.
На видео детально представлены диалоговые окна и программирование Андроид:
Источник