Всплывающие подсказки (тултипы)

В DivKit нет единого шаблона для всплывающих подсказок, но есть механизм, позволяющий показать любую верстку как всплывающую подсказку.

Посмотреть интерактивный пример

Объявление

Для объявления тултипа у нужного дива необходимо объявить массив tooltips.

  • id — идентификатор тултипа, нужен для управления им. Обязательное поле.
  • duration — время показа тултипа в мс. Если равно 0 — будет показываться до вызова экшена закрытия.
  • gravity — положение тултипа относительно вью, внутри которой объявлен.
  • transition_in — анимация, с которой появляется тултип. По умолчанию — сдвиг сверху вниз на 10 dp.
  • transition_out — анимация, с которой скрывается тултип. По умолчанию — сдвиг снизу вверх на 10 dp.
  • div — верстка любого дива, который будет показан в качестве тултипа.
  • offset — сдвиг относительно вью, внутри которой объявлен. Является объектом, внутри которого можно объявить x и y сдвига и их единицы измерения.
  • close_by_tap_outside — bool значение, позволяющее закрывать тултип при нажатии за его пределами. По умолчанию true.
  • tap_outside_actions — массив действий, выполняемых при нажатии за пределами тултипа.
Пример объекта offset
"offset": {
  "x": {
    "value": 40,
    "unit": "px"
  },
  "y": {
    "value": 40,
    "unit": "px"
  }
}
Пример тултипа с настройками нажатия за пределами
"tooltips": [{
  "id": "example_tooltip",
  "div": {
    "type": "text",
    "text": "Это тултип, который не закроется при нажатии за пределами"
  },
  "position": "bottom",
  "close_by_tap_outside": false,
  "tap_outside_actions": [{
    "log_id": "tap_outside_tooltip",
    "url": "div-action://log?message=Нажатие за пределами тултипа"
  }]
}]

Управление

  • div-action://show_tooltip?id=<tooltip_id> — показ тултипа.
  • div-action://hide_tooltip?id=<tooltip_id> — скрытие тултипа.

Можно вызвать из любого элемента верстки. id — идентификатор тултипа, который вы объявили в верстке.

Узнать больше

Вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru.

Репозиторий DivKit

Предыдущая