Пользовательский интерфейс Jetpack Compose Card занимает слишком много местаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Пользовательский интерфейс Jetpack Compose Card занимает слишком много места

Сообщение Anonymous »

Я работаю над эталонным приложением для Blood Bowl, и мне не удается добиться того, чтобы верхняя карточка плотнее охватывала текст и целые числа.
Если я удалю IntrinsicSize из строки fillMaxHeight столбца не работает.
И если я удалю fillMaxHeight из столбца, цветной фон левой стороны не достигнет нижняя часть карта
Странная вещь: без заполнения 16dp в последнем столбце нижняя карта была слишком маленькой.
Кто-нибудь знает, что я я здесь делаю неправильно?

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

@Composable
fun WeatherCardWithTopBar(title: String, text: String, icon: ImageVector) {
Card {
Row(Modifier
.fillMaxWidth()
.height(IntrinsicSize.Max),
) {
Column(
modifier = Modifier
.fillMaxWidth(0.20f)
.background(
MaterialTheme.colorScheme.secondary,
)
.padding(8.dp)
.fillMaxHeight(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Icon(
imageVector = icon,
modifier = Modifier.size(48.dp),
contentDescription = "Weather",
tint = MaterialTheme.colorScheme.onSecondary,
)
Text(
text = title,
modifier = Modifier.padding(8.dp),
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onSecondary,
)
}
Column(Modifier.padding(16.dp)) {
Text(text = text)
}
}
}
}
Изображение

Изменить:
@Always_a_Learner это произойдет на странице, если я удалю Intrinsic и fillMaxHeight
Я пытаюсь сделать так, чтобы значок погоды и число занимали всю высоту тот карточка с темным фоном.
Изображение

Я исправил это обходным путем.
Я поменял цвета, поэтому сама карточка имеет более темный цвет, а столбец текста теперь имеет цвет фона для более светлого цвета. (Возможно, в этом и не было необходимости)
Чтобы сохранить ширину части со значком и цифрами одинаковой, я добавил к значку горизонтальное отступы, потому что они все имеют одинаковую ширину. При этом игнорируется разная ширина чисел (например, «2» и «4-10»).
Помещение вертикального заполнения этого элемента в столбец, в котором он находится.
Мне все еще нужен IntrinsicSize, потому что в противном случае fillMaxHeight не заполнится до верха и низа карточки

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

@Composable()
fun WeatherCardWithTopBar(title: String, text: String, icon : ImageVector) {
Card(

) {
Row(Modifier
.background(
MaterialTheme.colorScheme.secondary
)
.fillMaxWidth()
.height(IntrinsicSize.Max),
verticalAlignment = Alignment.CenterVertically,
) {
Column(
modifier = Modifier
.background(
MaterialTheme.colorScheme.secondary
)
.fillMaxHeight()
.padding(vertical = 16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Icon(
icon,
modifier = Modifier
.padding(horizontal = 16.dp)
.size(48.dp),
contentDescription = "Weather",
tint = MaterialTheme.colorScheme.onSecondary
)
Text(
text = title,
modifier = Modifier.padding(8.dp),
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onSecondary
)
}
Column(Modifier
.background(
MaterialTheme.colorScheme.onSecondary
)
.fillMaxHeight()
.padding(16.dp)
) {
Text(text = text)
}
}
}
}
С помощью этого кода я получаю следующий результат:
[img]https://i. sstatic.net/VCkTYdTt.png[/img]


Подробнее здесь: https://stackoverflow.com/questions/792 ... much-space
Ответить

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

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

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

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

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