Размеры элемента в переменных
Расширение size_provider записывает ширину и высоту элемента в переменные после расчета его размеров.
Важно
Предпочтительный способ получить размеры элемента — свойство layout_provider. Оно принимает те же параметры и не требует подключения расширения. На Android и iOS обработчик расширения size_provider помечен как устаревший.
Пример
{
"type": "container",
"items": [
{
"type": "text",
"text": "Hello!",
"width": {
"type": "wrap_content"
},
"extensions": [
{
"id": "size_provider",
"params": {
"width_variable_name": "title_width"
}
}
]
},
{
"type": "separator",
"width": {
"type": "fixed",
"value": "@{title_width}"
}
}
]
}
В этом примере ширина разделителя равна ширине текста. Целочисленная переменная title_width должна быть объявлена в карточке.
Параметры
|
Параметры |
Описание |
|
|
Идентификатор расширения. |
|
|
Имя переменной, в которую записывается ширина элемента в dp. Необязательный параметр. |
|
|
Имя переменной, в которую записывается высота элемента в dp. Необязательный параметр. |
Задайте хотя бы один из параметров. Переменные должны быть объявлены с типом integer.
Подключение
build.gradle
dependencies {
implementation "com.yandex.div:div-size-provider:${versions.divkit}"
}
В коде:
val divConfiguration = DivConfiguration.Builder(imageLoader)
.extension(DivSizeProviderExtensionHandler())
.build()
Обработчик SizeProviderExtensionHandler доступен только при импорте модуля с атрибутом @_spi(Legacy):
@_spi(Legacy) import DivKitExtensions
DivKitComponents(
...
extensionHandlers: [
SizeProviderExtensionHandler(variablesStorage: variablesStorage)
]
)
import { SizeProvider } from '@divkitframework/divkit/client';
const map = new Map();
map.set('size_provider', SizeProvider);
render({
id: 'test',
target: element,
json: {},
extensions: map
});
Узнать больше
Вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru.