LazyColumn 不适合其在对话框中的内容
LazyColumn does not fit to its contents in dialog
我在对话框中有一个 LazyColumn,在一个简单的列中,该列在对话框的末尾还包含一行按钮(取消和设置),之前我在 LazyColumn 上使用 weight(1f) 修饰符来占据对话框的大部分高度然后将剩余的 space 分配给按钮行,但问题是 weight 修饰符导致列表扩展全高,即使它是空的 并且如果我如果不设置权重修饰符,那么当 LazyColumn 的内容超过 LazyColumn 时,开始占据该列的全部高度,即使滚动也找不到该行按钮。
我想让我的按钮行与对话框的底部对齐,并且 LazyColumn 的高度与其内容一样高,而不占用 space 行按钮。
这是我的代码
Column{
LazyColumn(modifier = Modifier.weight(1f)){
items(myItems){ item->
DisplayItem(item)
}
}
Row{
Button{}
Button{}
}
}
由于按钮行必须始终可见,警报对话框提供了一个可组合项来向其中添加按钮,我们可以使用该实现
您可以尝试更改项目的数量来查看问题,在第二种情况下,当项目的数量超过并且必须进行滚动时,按钮行在屏幕上不可见,尽管它应该是!
这会起作用(不理想)
AlertDialog(
onDismissRequest = { /*TODO*/ },
text = {
LazyColumn{
items(10){ num->
Text(text = num.toString())
}
}
},
buttons = {
Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.End) {
Button(onClick = { /*TODO*/ }) {
Text(text = "Cancel")
}
Button(onClick = { /*TODO*/ }) {
Text(text = "Confirm")
}
}
}
)
这行不通
Dialog(onDismissRequest = { /*TODO*/ }) {
Column(modifier = Modifier.background(color = MaterialTheme.colors.background)) {
LazyColumn{
items(40){ num->
Text(text = num.toString())
}
}
Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.End) {
Button(onClick = { /*TODO*/ }) {
Text(text = "Cancel")
}
Button(onClick = { /*TODO*/ }) {
Text(text = "Confirm")
}
}
}
}
您可以为 AlertDialog 设置修饰符以限制对话框高度。
一排按钮可见。
AlertDialog(
onDismissRequest = onDismiss,
modifier = Modifier.fillMaxHeight(.95f),
buttons = {
TextButton(onClick = { /*TODO*/ } ) {
Text(stringResource(id = android.R.string.ok))
}
},
text = {
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(40){ num->
Text(text = num.toString())
}
}
}
)
我在对话框中有一个 LazyColumn,在一个简单的列中,该列在对话框的末尾还包含一行按钮(取消和设置),之前我在 LazyColumn 上使用 weight(1f) 修饰符来占据对话框的大部分高度然后将剩余的 space 分配给按钮行,但问题是 weight 修饰符导致列表扩展全高,即使它是空的 并且如果我如果不设置权重修饰符,那么当 LazyColumn 的内容超过 LazyColumn 时,开始占据该列的全部高度,即使滚动也找不到该行按钮。
我想让我的按钮行与对话框的底部对齐,并且 LazyColumn 的高度与其内容一样高,而不占用 space 行按钮。
这是我的代码
Column{
LazyColumn(modifier = Modifier.weight(1f)){
items(myItems){ item->
DisplayItem(item)
}
}
Row{
Button{}
Button{}
}
}
由于按钮行必须始终可见,警报对话框提供了一个可组合项来向其中添加按钮,我们可以使用该实现
您可以尝试更改项目的数量来查看问题,在第二种情况下,当项目的数量超过并且必须进行滚动时,按钮行在屏幕上不可见,尽管它应该是!
这会起作用(不理想)
AlertDialog(
onDismissRequest = { /*TODO*/ },
text = {
LazyColumn{
items(10){ num->
Text(text = num.toString())
}
}
},
buttons = {
Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.End) {
Button(onClick = { /*TODO*/ }) {
Text(text = "Cancel")
}
Button(onClick = { /*TODO*/ }) {
Text(text = "Confirm")
}
}
}
)
这行不通
Dialog(onDismissRequest = { /*TODO*/ }) {
Column(modifier = Modifier.background(color = MaterialTheme.colors.background)) {
LazyColumn{
items(40){ num->
Text(text = num.toString())
}
}
Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.End) {
Button(onClick = { /*TODO*/ }) {
Text(text = "Cancel")
}
Button(onClick = { /*TODO*/ }) {
Text(text = "Confirm")
}
}
}
}
您可以为 AlertDialog 设置修饰符以限制对话框高度。 一排按钮可见。
AlertDialog(
onDismissRequest = onDismiss,
modifier = Modifier.fillMaxHeight(.95f),
buttons = {
TextButton(onClick = { /*TODO*/ } ) {
Text(stringResource(id = android.R.string.ok))
}
},
text = {
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(40){ num->
Text(text = num.toString())
}
}
}
)