Lazyrow элементы с FillParentMaxWidth и Default MinsizeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Lazyrow элементы с FillParentMaxWidth и Default Minsize

Сообщение Anonymous »

Корпус довольно прост. Я пытаюсь достичь отзывчивой ширины элемента внутри LazyRow .

[*] Если присутствует только один элемент, заполните родительскую ширину.
Если 2, разделите ширину в равной степени. Ширина.

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

@Composable
fun SingleBox(
modifier: Modifier = Modifier,
) {
Column(
modifier = modifier,
) {
val size = 1
LazyRow {
items(size) {
Box(
modifier = Modifier
.height(100.dp)
.defaultMinSize(minWidth = 100.dp)
.fillParentMaxWidth(1f / size)
.background(Color.Red)
.border(
BorderStroke(
2.dp,
Color.White,
),
),
)
}
}
}
}
Результатом будет 1 Box заполнение всего Lazyrow

/>
Но при попытке выйти за пределы и указать размер , чтобы быть 10, мы получаем что -то довольно странное. src = "https://i.sstatic.net/3gy9y2dl.png"/>
Похоже, что минимальный размер применяется для коробки , но ограничения, в которых можно размещать в блоке Modifier. Сначала подумал о заказе модификатора и переместил фон и границу вверх по цепочке.

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

                Box(
modifier = Modifier
.height(100.dp)
.border(
BorderStroke(
2.dp,
Color.White,
),
)
.background(Color.Red)
.defaultMinSize(minWidth = 100.dp)
.fillParentMaxWidth(1f / size),
)

И это, казалось, решает проблему ... но теперь пусть положит что -то в коробку . Например, в другом поле : d.

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

                Box(
modifier = Modifier
.height(100.dp)
.border(
BorderStroke(
2.dp,
Color.White,
),
)
.background(Color.Red)
.defaultMinSize(minWidth = 100.dp)
.fillParentMaxWidth(1f / size),
) {
Box(
modifier = Modifier
.background(Color.Black)
.border(
BorderStroke(
2.dp,
Color.White,
),
)
.fillMaxSize()
)
}

Похоже, что размер, сообщаемый дочерним коробку , является рассчитанным с помощью FillParentMaxWidth Modifier. что -нибудь здесь? Это правильное поведение?

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

                Box(
Modifier
.defaultMinSize(100.dp)
.height(100.dp),
) {
Spacer(
modifier = Modifier
.fillParentMaxWidth(1f / size)
)
Box(
modifier = Modifier
.background(Color.Red)
.border(
BorderStroke(
2.dp,
Color.White,
),
)
.matchParentSize(),
)
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... ultminsize
Ответить

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

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

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

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

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