Jetpack Compose Tabelle: Wie kann man die Reihenhöhe dynamisch basierend auf der höchsten Zelle machen?
Posted: 10 Apr 2025, 07:24
Ich baue einen Tisch in Android mit Jetpack Compose. Ich habe mehrere Spalten in jeder Zeile, und der Inhalt innerhalb der Zellen kann die Länge variieren. Ich möchte, dass sich die Höhe der gesamten Zeile automatisch an die Zelle mit dem längsten Text (oder höchsten Inhalt) in dieser Reihe anpasst. in Screenclass. < /p>
Wenn ich versuche, mich mit einer bestimmten Zeile und der Spaltenposition zu ändern, erhöht es sich auf falsche Weise wie:
Code: Select all
Column(
modifier = Modifier
.height(415.dp)
.wrapContentWidth()
) {
SelectableVerticalGridView(
columnInfos = listOf(
ColumnInfo(R.string.pl_pos_title, width = 50.dp, height = 42.dp),
ColumnInfo(R.string.special_items, width = 92.dp, height = 42.dp),
ColumnInfo(R.string.pl_type, width = 50.dp, height = 42.dp),
ColumnInfo(R.string.pl_pcs, width = 50.dp, height = 42.dp),
ColumnInfo(R.string.pl_wgt, width = 52.dp, height = 42.dp),
ColumnInfo(R.string.pl_batt, width = 60.dp, height = 42.dp)
),
viewModelForCell = { column, row ->
viewModel.viewModelForCell(row, column)
},
headerHeight = 26.dp,
numberOfRows = viewModel.numberOfRows(),
headerColor = Color.Cyan,
rowClickable = true,
cellColor = MenuButtonBackground,
headerFontSize = 17.sp,
fontWeight = FontWeight.Bold,
initialSelected = viewModel.uiState.value.selectedCell,
fontSize = 18.sp,
displayHeaderBorder = true
)
}
< /code>
Unten finden Sie den Text für Gitterzellenelement. < /p>
Text(
text = cellViewModel(columnNumber, rowNumber).formattedDisplayText,
maxLines = 2,
modifier = Modifier
.height(columnInfos[columnNumber].height)
.width(columnInfos[columnNumber].width)
.background(
if (displayHighlightCell) cellViewModel(
columnNumber, rowNumber
).selectedColor else cellViewModel(columnNumber, rowNumber).defaultColor
)
.border(if (displayHighlightCell) 2.dp else 0.5.dp, Color.Black)
.testTag("Cell $columnNumber,$rowNumber")
.padding(top = cellTextPadding),
textAlign = cellViewModel(columnNumber, rowNumber).textAlignment,
fontSize = fontSize,
fontWeight = cellViewModel(
columnNumber, rowNumber
).bold,
color = Color.Black,
textDecoration = if (cellViewModel(
columnNumber, rowNumber
).underlined
) TextDecoration.Underline else null
)