---
metadata:
  - name: generator
    content: Diplodoc Platform v5.70.0
alternate:
  - https://divkit.tech/docs/en/concepts/extensions/size-provider.md
  - https://divkit.tech/docs/ru/concepts/extensions/size-provider.md
  - href: https://divkit.tech/docs/ru/concepts/extensions/size-provider.md
    type: text/markdown
    title: Markdown version
  - href: https://divkit.tech/docs/ru/llms.txt?revision=r22102947
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://divkit.tech/docs/ru/llms.txt?revision=r22102947

# Размеры элемента в переменных

Расширение `size_provider` записывает ширину и высоту элемента в [переменные](https://divkit.tech/docs/ru/concepts/variables.md) после расчета его размеров.

{% note warning %}

Предпочтительный способ получить размеры элемента — свойство [layout_provider](https://divkit.tech/docs/ru/concepts/layout.md#layout-provider). Оно принимает те же параметры и не требует подключения расширения. На Android и iOS обработчик расширения `size_provider` помечен как устаревший.

{% endnote %}

{% cut "Пример" %}

```json translate=no
{
  "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` должна быть объявлена в карточке.

{% endcut %}

## Параметры {#params}

#|
||
**Параметры**
|
**Описание**
||

||
`id`
|
Идентификатор расширения.
||

||
`width_variable_name`
|
Имя переменной, в которую записывается ширина элемента в dp. Необязательный параметр.
||

||
`height_variable_name`
|
Имя переменной, в которую записывается высота элемента в dp. Необязательный параметр.
||
|#

Задайте хотя бы один из параметров. Переменные должны быть объявлены с типом `integer`.

## Подключение {#connect}

{% list tabs %}

- Android

  build.gradle

  ```groovy translate=no
  dependencies {
      implementation "com.yandex.div:div-size-provider:${versions.divkit}"
  }
  ```

  В коде:

  ```kotlin translate=no
  val divConfiguration = DivConfiguration.Builder(imageLoader)
      .extension(DivSizeProviderExtensionHandler())
      .build()
  ```

- iOS

  Обработчик `SizeProviderExtensionHandler` доступен только при импорте модуля с атрибутом `@_spi(Legacy)`:

  ```swift translate=no
  @_spi(Legacy) import DivKitExtensions

  DivKitComponents(
    ...
    extensionHandlers: [
      SizeProviderExtensionHandler(variablesStorage: variablesStorage)
    ]
  )
  ```

- Web

  ```js translate=no
  import { SizeProvider } from '@divkitframework/divkit/client';

  const map = new Map();

  map.set('size_provider', SizeProvider);

  render({
      id: 'test',
      target: element,
      json: {},
      extensions: map
  });
  ```

{% endlist %}

<!-- source: ru/_includes/index/troubleshooting.md -->
## Узнать больше {#troubleshooting}

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



[Репозиторий DivKit](https://github.com/divkit/divkit)




<!-- endsource: ru/_includes/index/troubleshooting.md -->
