Почему порядок модификаторов влияет на расположение и размер аспекта в Jetpack Compose?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему порядок модификаторов влияет на расположение и размер аспекта в Jetpack Compose?

Сообщение Anonymous »

На самом деле я читаю этот ответ, но информации о соотношении сторон недостаточно.
RectangleScreen:

Код: Выделить всё

@Composable
fun RectangleScreen(modifier: Modifier) {
Canvas(modifier.border(7.dp , color = Color.Red)) {
drawRect(
Color.Black
)
}
}
Код 1:

Код: Выделить всё

setContent {
RectangleScreen(modifier = Modifier
.aspectRatio(1.0f)
.border(7.dp , Color.Magenta)
.fillMaxSize()
.border(7.dp , Color.Yellow )
.padding(64.dp)
.border(7.dp , Color.Blue)
)
}
В этом случае RectangleScreen отображается в верхней части экрана квадратной формы.
Код 2:

Код: Выделить всё

setContent {
RectangleScreen(modifier = Modifier
.fillMaxSize()
.border(7.dp , Color.Magenta)
.aspectRatio(1.0f)
.border(7.dp , Color.Yellow )
.padding(64.dp)
.border(7.dp , Color.Blue)
)
}
В этом случае RectangleScreen также имеет квадратную форму, но расположен в центре экрана.
Мое понимание
код 1:
поскольку высота и ширина не указаны перед аспектомRatio(1f) и по умолчанию matchHeightConstraintsFirst: Boolean = false , поэтому он снова пытается определить размер содержимого по входящему ограничению: сначала проверьте Constraint.MaxWidth, затем Constraint.MaxHeight, а затем для minWidth, затем minHeight, поэтому ни одно из ограничений не является допустимым, поэтому в конце ограничения не будут соблюдаться, а размер содержимого будет таким, чтобы ограничения. maxWidth или ограничения. maxHeight соответствует (в зависимости от matchHeightConstraintsFirst).
Почему я получаю квадратный прямоугольник сверху?
код 2:
поскольку высота и ширина указываются перед аспектомRatio(1f) и по умолчанию matchHeightConstraintsFirst: Boolean = false , поэтому он пытается изменить размер содержимого в соответствии с указанным соотношением сторон как 1f , пытаясь сопоставить одно из входящих ограничений, чтобы первое ограничение это Constraint.MaxWidth, который, скажем, равен 1080.dp, чтобы поддерживать соотношение сторон, такое как высота: ширина, равное 1:1, поэтому наша высота будет 1080.dp, поэтому мы получаем квадратную форму.
почему положение квадрата находится в середине экрана
Мои вопросы:
Почему в коде 1 в верхней части экрана появляется квадрат?
Почему в Коде 2 квадрат появляется в центре экрана?
Как рассчитываются размер и положение в обоих случаях?


Подробнее здесь: https://stackoverflow.com/questions/790 ... io-in-jetp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»