View¶
Самый фундаментальный компонент для создания пользовательского интерфейса, View
— это контейнер, который поддерживает компоновку с помощью элементов управления flexbox, style, some touch handling и accessibility. View
отображает непосредственно эквивалент нативного представления на любой платформе, на которой работает React Native, будь то UIView
, div
, android.view
и т. д.
Представление View
предназначено для вложения в другие представления и может иметь от 0 до многих дочерних элементов любого типа.
Этот пример создает View
, который оборачивает два поля с цветом и текстовый компонент в строку с подложкой.
View
разработаны для использования с StyleSheet
для ясности и производительности, хотя встроенные стили также поддерживаются.
Синтетические сенсорные события¶
Для пропсов ответчика View
(например, onResponderMove
), передаваемые им синтетические события касания имеют форму PressEvent.
Свойства¶
accessibilityActions
¶
Действия доступности позволяют ассистивной технологии программно вызывать действия компонента. Свойство accessibilityActions
должно содержать список объектов действий. Каждый объект действия должен содержать имя поля и метку.
Дополнительную информацию см. в Руководстве по доступности.
Тип |
---|
array |
accessibilityElementsHidden
¶
Значение, указывающее, являются ли элементы доступности, содержащиеся в этом элементе доступности, скрытыми. По умолчанию false
.
Дополнительную информацию см. в Руководстве по доступности.
Тип |
---|
bool |
accessibilityHint
¶
Подсказка доступности помогает пользователям понять, что произойдет, когда они выполнят действие над элементом доступности, если результат не ясен из метки доступности.
Тип |
---|
string |
accessibilityLanguage
¶
Значение, указывающее, какой язык должен использоваться программой чтения с экрана при взаимодействии пользователя с элементом. Оно должно соответствовать спецификации BCP 47.
Дополнительную информацию см. в iOS accessibilityLanguage
doc.
Тип |
---|
string |
accessibilityIgnoresInvertColors
¶
Значение, указывающее, должно или не должно это представление быть инвертированным, если включена инверсия цвета. Значение true
указывает, что представление не должно быть инвертировано, даже если инверсия цвета включена.
Дополнительную информацию см. в Руководстве по доступности.
Тип |
---|
bool |
accessibilityLabel
¶
Переопределяет текст, который считывается программой чтения с экрана, когда пользователь взаимодействует с элементом. По умолчанию метка строится путем обхода всех дочерних элементов и накопления всех узлов Text
, разделенных пробелом.
Тип |
---|
string |
accessibilityLiveRegion
¶
Указывает службам доступности, следует ли уведомлять пользователя об изменении данного представления. Работает только для Android API >= 19. Возможные значения:
none
— Службы доступности не должны объявлять об изменениях в этом представлении.polite
— Службы доступности должны объявлять об изменениях в этом представлении.assertive
— Службы обеспечения доступности должны прерывать текущую речь, чтобы немедленно объявить об изменениях в этом представлении.
Для справки смотрите Android View
docs.
Тип |
---|
enum('none', 'polite', 'assertive') |
accessibilityRole
¶
accessibilityRole
передает назначение компонента пользователю вспомогательной технологии.
accessibilityRole
может быть одним из следующих:
none
— Используется, когда элемент не имеет роли.button
— Используется, когда элемент должен рассматриваться как кнопка.link
— Используется, когда элемент должен рассматриваться как ссылка.search
— Используется, когда элемент текстового поля должен также рассматриваться как поле поиска.image
— Используется, когда элемент должен рассматриваться как изображение. Может сочетаться, например, с кнопкой или ссылкой.keyboardkey
— Используется, когда элемент действует как клавиша клавиатуры.text
— Используется, когда элемент должен рассматриваться как статичный текст, который не может изменяться.adjustable
— Используется, когда элемент может быть "отрегулирован" (например, ползунок).imagebutton
— Используется, когда элемент должен рассматриваться как кнопка, а также является изображением.header
— Используется, когда элемент действует как заголовок для раздела содержимого (например, заголовок навигационной панели).summary
— Используется, когда элемент может быть использован для предоставления краткой информации о текущих условиях в приложении при первом запуске.alert
— Используется, когда элемент содержит важный текст, который должен быть представлен пользователю.checkbox
— Используется, когда элемент представляет флажок, который может быть отмечен, снят или иметь смешанное состояние.combobox
— Используется, когда элемент представляет собой комбинированное окно, которое позволяет пользователю выбирать из нескольких вариантов.menu
— Используется, когда компонент представляет собой меню выбора.menubar
— Используется, когда компонент представляет собой контейнер нескольких меню.menuitem
— Используется для представления пункта в меню.progressbar
— Используется для представления компонента, который показывает прогресс выполнения задачи.radio
— Используется для представления радиокнопки.radiogroup
— Используется для представления группы радиокнопок.scrollbar
— Используется для представления полосы прокрутки.spinbutton
— Используется для представления кнопки, открывающей список вариантов.switch
— Используется для представления переключателя, который можно включать и выключать.tab
— Используется для представления вкладки.tablist
— Используется для представления списка вкладок.timer
— Используется для представления таймера.toolbar
— Используется для представления панели инструментов (контейнер кнопок действий или компонентов).grid
— Используется сScrollView
,VirtualizedList
,FlatList
илиSectionList
для представления сетки. Добавляет объявления о входе/выходе из сетки в androidGridView
.
Тип |
---|
string |
accessibilityState
¶
Описывает текущее состояние компонента для пользователя вспомогательной технологии.
Дополнительную информацию см. в Руководстве по доступности.
Тип |
---|
object: |
accessibilityValue
¶
Представляет текущее значение компонента. Это может быть текстовое описание значения компонента, а для компонентов, основанных на диапазоне, таких как ползунки и индикаторы выполнения, оно содержит информацию о диапазоне (минимальное, текущее и максимальное).
Дополнительную информацию см. в Руководстве по доступности.
Тип |
---|
object: {min: number, max: number, now: number, text: string} |
accessibilityViewIsModal
¶
Значение, указывающее, должен ли VoiceOver игнорировать элементы в представлениях, которые являются родными братьями и сестрами приемника. По умолчанию false
.
Дополнительную информацию см. в Руководстве по доступности.
Тип |
---|
bool |
accessible
¶
Когда true
, указывает, что представление является элементом доступности. По умолчанию все осязаемые элементы являются доступными.
aria-busy
¶
Указывает на то, что элемент изменяется и что вспомогательные технологии могут захотеть подождать, пока изменения не будут завершены, прежде чем информировать пользователя об обновлении.
Тип | По-умолчанию |
---|---|
boolean | false |
aria-checked
¶
Указывает состояние элемента с флажком. Это поле может принимать либо булево значение, либо строку "mixed" для представления смешанных флажков.
Тип | По-умолчанию |
---|---|
boolean , 'mixed' | false |
aria-disabled
¶
Указывает, что элемент воспринимается, но отключен, поэтому его нельзя редактировать или использовать иным образом.
Тип | По-умолчанию |
---|---|
boolean | false |
aria-expanded
¶
Указывает, является ли расширяемый элемент в данный момент развернутым или свернутым.
Тип | По-умолчанию |
---|---|
boolean | false |
aria-hidden
¶
Указывает, являются ли элементы доступности, содержащиеся в этом элементе доступности, скрытыми.
Например, в окне, содержащем родственные представления A
и B
, установка aria-hidden
в true
для представления B
заставляет VoiceOver игнорировать элементы в представлении B
.
Тип | По-умолчанию |
---|---|
boolean | false |
aria-label
¶
Определяет строковое значение, которое маркирует интерактивный элемент.
Тип |
---|
string |
aria-labelledby
¶
Определяет элемент, который маркирует элемент, к которому он применяется. Значение aria-labelledby
должно соответствовать nativeID
связанного элемента:
1 2 3 4 5 6 7 |
|
Тип |
---|
string |
aria-live
¶
Указывает, что элемент будет обновляться, и описывает типы обновлений, которые агенты пользователя, вспомогательные технологии и пользователь могут ожидать от живого региона.
- off Службы доступности не должны объявлять об изменениях в этом представлении.
- polite Службы обеспечения доступности должны объявлять об изменениях в этом представлении.
- assertive Службы доступа должны прерывать текущую речь, чтобы немедленно объявить об изменениях в этом представлении.
Тип | По-умолчанию |
---|---|
enum('assertive', 'off', 'polite') | 'off' |
aria-modal
¶
Булево значение, указывающее, должен ли VoiceOver игнорировать элементы в представлениях, которые являются родными братьями и сестрами приемника. Имеет приоритет перед параметром accessibilityViewIsModal
.
Тип | По-умолчанию |
---|---|
boolean | false |
aria-selected
¶
Указывает, выбран ли выбираемый элемент в данный момент или нет.
Тип |
---|
boolean |
aria-valuemax
¶
Представляет максимальное значение для компонентов, основанных на диапазоне, таких как ползунки и прогресс-бары. Имеет приоритет над значением max
в пропсе accessibilityValue
.
Тип |
---|
number |
aria-valuemin
¶
Представляет минимальное значение для компонентов, основанных на диапазоне, таких как ползунки и прогресс-бары. Имеет приоритет над значением min
в пропсе accessibilityValue
.
Тип |
---|
number |
aria-valuenow
¶
Представляет текущее значение для компонентов, основанных на диапазоне, таких как ползунки и прогресс-бары. Имеет приоритет над значением now
в пропсе accessibilityValue
.
Тип |
---|
number |
aria-valuetuetext
¶
Представляет собой текстовое описание компонента. Имеет приоритет над значением text
в пропсе accessibilityValue
.
Тип |
---|
string |
collapsable
¶
Представления, которые используются только для компоновки своих дочерних элементов или иным образом ничего не рисуют, могут быть автоматически удалены из родной иерархии в качестве оптимизации. Установите это свойство в false
, чтобы отключить эту оптимизацию и обеспечить существование этого View
в иерархии нативных представлений.
Тип |
---|
bool |
focusable
¶
Должен ли этот View
быть фокусируемым с помощью несенсорного устройства ввода, например, получать фокус с аппаратной клавиатуры.
Тип |
---|
boolean |
hitSlop
¶
Определяет, на каком расстоянии от экрана может начинаться событие касания. Типичные рекомендации по интерфейсу рекомендуют использовать сенсорные цели размером не менее 30-40 точек/пикселей, не зависящих от плотности.
Например, если высота touchable view равна 20, то высоту touchable можно увеличить до 40 с помощью hitSlop={{top: 10, bottom: 10, left: 0, right: 0}}
.
Область касания никогда не выходит за границы родительского представления, а Z-индекс родственных представлений всегда имеет приоритет, если касание попадает на два перекрывающихся представления.
Тип |
---|
object: {top: number, left: number, bottom: number, right: number} |
id
¶
Используется для определения местоположения данного представления из нативных классов. Имеет приоритет над пропсом nativeID
.
Это отключает оптимизацию "удаления вида только для макета" для этого вида!
Тип |
---|
string |
importantForAccessibility
¶
Управляет тем, насколько представление важно для доступности, а именно: вызывает ли оно события доступности и сообщается ли о нем службам доступности, которые запрашивают экран. Работает только для Android.
Возможные значения:
auto
— Система определяет, важно ли представление для доступности — по умолчанию (рекомендуется).yes
— Представление важно для доступности.no
— Представление не важно для доступности.no-hide-descendants
— Представление не является важным для доступности, как и все его потомки.
Для справки смотрите Android importantForAccessibility
docs.
Тип |
---|
enum('auto', 'yes', 'no', 'no-hide-descendants') |
nativeID
¶
Используется для определения местоположения этого представления из собственных классов.
Это отключает оптимизацию "удаления вида только для макета" для этого вида!
Тип |
---|
string |
needsOffscreenAlphaCompositing
¶
Нужно ли выводить этот View
за пределы экрана и компоновать его с альфа-значением, чтобы сохранить 100% правильные цвета и поведение смешивания. По умолчанию (false
) компонент и его дочерние элементы отрисовываются с альфой, применяемой к краске, используемой для отрисовки каждого элемента, вместо того, чтобы выводить весь компонент за пределы экрана и компоновать его обратно с альфой. Это значение по умолчанию может быть заметным и нежелательным в случае, когда View
, для которого вы устанавливаете непрозрачность, имеет несколько перекрывающихся элементов (например, несколько перекрывающихся View
, или текст и фон).
Рендеринг за пределами экрана для сохранения корректного поведения альфа-канала является чрезвычайно дорогим и трудно отлаживаемым для неродных разработчиков, поэтому он не включен по умолчанию. Если вам необходимо включить это свойство для анимации, подумайте о том, чтобы объединить его с renderToHardwareTextureAndroid
, если содержимое представления статично (т.е. его не нужно перерисовывать каждый кадр). Если это свойство включено, представление будет отрисовано за пределами экрана один раз, сохранено в аппаратной текстуре, а затем композитировано на экран с альфой каждый кадр без необходимости переключения целей рендеринга на GPU.
Тип |
---|
bool |
nextFocusDown
¶
Назначает следующее представление, которое будет получать фокус, когда пользователь перемещается вниз. См. документацию по Android.
Тип |
---|
number |
nextFocusForward
¶
Назначает следующее представление, которое будет получать фокус, когда пользователь перемещается вперед. См. документацию по Android.
Тип |
---|
number |
nextFocusLeft
¶
Назначает следующее представление, которое будет получать фокус при навигации пользователя влево. См. документацию по Android.
Тип |
---|
number |
nextFocusRight
¶
Назначает следующее представление для получения фокуса, когда пользователь перемещается вправо. См. документацию по Android.
Тип |
---|
number |
nextFocusUp
¶
Назначает следующее представление, которое будет получать фокус при навигации пользователя вверх. См. документацию по Android.
Тип |
---|
number |
onAccessibilityAction
¶
Вызывается, когда пользователь выполняет действия по обеспечению доступности. Единственным аргументом этой функции является событие, содержащее имя выполняемого действия.
Дополнительную информацию см. в Руководстве по доступности.
Тип |
---|
function |
onAccessibilityEscape
¶
Если accessible
имеет значение true
, система будет вызывать эту функцию, когда пользователь выполнит жест выхода.
Тип |
---|
function |
onAccessibilityTap
¶
Если accessible
имеет значение true
, система попытается вызвать эту функцию, когда пользователь выполнит жест касания доступности.
Тип |
---|
function |
onLayout
¶
Вызывается при монтировании и при смене раскладки.
Это событие срабатывает сразу после расчета макета, но новый макет может быть еще не отражен на экране в момент получения события, особенно если идет анимация макета.
Тип |
---|
({nativeEvent: LayoutEvent}) => void |
onMagicTap
¶
Если accessible
имеет значение true
, система будет вызывать эту функцию, когда пользователь выполнит жест magic tap.
Тип |
---|
function |
onMoveShouldSetResponder
¶
Хочет ли это представление "претендовать" на отзывчивость на прикосновение? Это вызывается для каждого движения прикосновения к View
, когда он не является ответчиком.
Тип |
---|
({nativeEvent: PressEvent}) => boolean |
onMoveShouldSetResponderCapture
¶
Если родительский View
хочет запретить дочернему View
стать ответчиком при перемещении, он должен иметь этот обработчик, который возвращает true
.
Тип |
---|
({nativeEvent: PressEvent}) => boolean |
onResponderGrant
¶
Представление теперь реагирует на события прикосновения. Сейчас самое время выделить и показать пользователю, что происходит.
Тип |
---|
({nativeEvent: PressEvent}) => void |
onResponderMove
¶
Пользователь перемещает свой палец.
Тип |
---|
({nativeEvent: PressEvent}) => void |
onResponderReject
¶
Другой ответчик уже активен и не выпустит его для того View
, который просит быть ответчиком.
Тип |
---|
({nativeEvent: PressEvent}) => void |
onResponderRelease
¶
Уволен в конце касания.
Тип |
---|
({nativeEvent: PressEvent}) => void |
onResponderTerminate
¶
Ответчик был забран из View
. Может быть взят другими представлениями после вызова onResponderTerminationRequest
, или может быть взят ОС без запроса (например, происходит с центром управления/центром уведомлений на iOS).
Тип |
---|
({nativeEvent: PressEvent}) => void |
onResponderTerminationRequest
¶
Какой-то другой View
хочет стать отвечающим и просит этот View
освободить своего отвечающего. Возврат true
позволяет освободить его.
Тип |
---|
({nativeEvent: PressEvent}) => void |
onStartShouldSetResponder
¶
Хочет ли это представление стать ответчиком в начале касания?
Тип |
---|
({nativeEvent: PressEvent}) => boolean |
onStartShouldSetResponderCapture
¶
Если родительский View
хочет предотвратить превращение дочернего View
в ответчика при запуске касания, он должен иметь этот обработчик, который возвращает true
.
Тип |
---|
({nativeEvent: PressEvent}) => boolean |
Управляет тем, может ли View
быть целью событий касания.
auto
: Вид может быть целью событий касания.none
: Вид никогда не является целью событий касания.box-none
: Представление никогда не является целью событий касания, но его вложенные представления могут быть. Это ведет себя так же, как если бы вид имел следующие классы в CSS:
1 2 3 4 5 6 |
|
1 2 3 4 5 6 |
|
Тип |
---|
enum('box-none', 'none', 'box-only', 'auto') |
removeClippedSubviews
¶
Это зарезервированное свойство производительности, открытое RCTView
, полезно для прокрутки содержимого при наличии большого количества вложенных представлений, большинство из которых находится за пределами экрана. Чтобы это свойство было эффективным, оно должно быть применено к представлению, которое содержит много вложенных представлений, выходящих за его границы. Подвиды также должны иметь overflow: hidden
, как и содержащее их представление (или одно из его супервидов).
Тип |
---|
bool |
renderToHardwareTextureAndroid
¶
Должен ли этот View
рендерить себя (и все свои дочерние элементы) в единую аппаратную текстуру на GPU.
На Android это полезно для анимаций и взаимодействий, которые изменяют только непрозрачность, поворот, перевод и/или масштаб: в этих случаях не нужно перерисовывать представление и повторно выполнять списки отображения. Текстуру можно использовать повторно и повторно компоновать с разными параметрами. Недостатком является то, что это может использовать ограниченную видеопамять, поэтому этот параметр следует вернуть в false
в конце взаимодействия/анимации.
Тип |
---|
bool |
role
¶
роль
передает назначение компонента пользователю вспомогательной технологии. Имеет приоритет над пропсом accessibilityRole
.
Тип |
---|
Role |
shouldRasterizeIOS
¶
Должен ли этот View
быть отображен как растровое изображение перед композитингом.
На iOS это полезно для анимаций и взаимодействий, которые не изменяют размеры этого компонента и его дочерних элементов; например, при трансляции положения статического представления растеризация позволяет рендереру повторно использовать кэшированную битовую карту статического представления и быстро компоновать ее во время каждого кадра.
Тип |
---|
bool |
style
¶
Тип |
---|
View Style |
tabIndex
¶
Должен ли этот View
быть фокусируемым с помощью несенсорного устройства ввода, например, получать фокус с аппаратной клавиатуры.
Поддерживает следующие значения:
0
— Вид находится в фокусе-1
— Вид не фокусируется
Тип |
---|
enum(0, -1) |
testID
¶
Используется для размещения этого представления в сквозных тестах.
Это отключает оптимизацию "удаления вида только для макета" для этого вида!
Тип |
---|
string |