Разница между Expanded и LayoutSize.Expand для столбца и строки в Jetpack Compose - PullRequest
1 голос
/ 25 октября 2019

Я пробовал Jetpack Compose на Android Studio Canary 1, и я добавил Column composable к пользовательскому интерфейсу. Column имеет одно свойство с именем modifier, в которое мы можем передавать различные модификаторы. Я использовал модификатор Expanded, в результате чего Column занял все доступное пространство.

Кроме того, Column имеет свойства mainAxisSize и crossAxisSize, поэтому я попробовал их также и установил LayoutSize.Expandкоторый предназначен для расширения данной оси, я думаю. Это также привело к тому, что Column занял все доступное пространство. Посмотрите на пример ниже:

1. Использование LayoutSize.Expand

Column(mainAxisSize = LayoutSize.Expand,
crossAxisSize = LayoutSize.Expand) {
    Text("Jetpack",modifier = ExpandedHeight)
    Text("Compose",modifier = ExpandedHeight)
}

Вывод:

enter image description here

2. Использование расширенного

Column(modifier = Expanded) {
    Text("Jetpack",modifier = ExpandedHeight)
    Text("Compose",modifier = ExpandedHeight)
}

Вывод:

enter image description here

Наблюдение состоит в том, что оба приведенных ниже кода обеспечивают одинаковый вывод. Тогда в чем же разница между Expanded и LayoutSize.Expand, когда речь идет о Column и Row?

1 Ответ

1 голос
/ 26 октября 2019

Это два способа достижения одной и той же цели:

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

Параметр mainAxisSize - это способ задания размера макета, а также параметр, специфичный для строки / столбца.

Вы должны использовать модификатор Expanded. Параметр mainAxisSize уже удален из Столбец .

...