gpt4 book ai didi

android - LazyColumn 如何与其他可组合项一起适应屏幕?

转载 作者:行者123 更新时间:2023-12-03 08:21:20 25 4
gpt4 key购买 nike

@Composable
fun ShowScreen(viewModel: UseListViewModel){
Column() {
ShowList(viewModel = viewModel)
Buttons(viewModel)
}
}

@Composable
private fun ShowList(viewModel: UseListViewModel) {

LazyColumn() {
items(viewModel.itemListMutableState.value?: emptyList()){
ShowItem(it,viewModel)
}
}

}
@Composable
private fun ShowItem(item: IBaseDataModel, viewModel: UseListViewModel) {
Row (horizontalArrangement = Arrangement.SpaceBetween,verticalAlignment= Alignment.CenterVertically,
modifier = Modifier
.background(Color(AppConstants.itemHolderBackgroundColor(item.state)))
.clickable { viewModel.selectItem(item) }

.fillMaxWidth()
){
Text(text = item.idString)
Text(text = item.date1String)
Checkbox(checked = item.isSelected,onCheckedChange = { viewModel.setIsSelectedItem(item,it)})
Button(onClick = {viewModel.deleteItem(item)}) {
Text(text = "delete")
}
}


}
@Composable
private fun Buttons(viewModel: UseListViewModel){
Row (verticalAlignment = Alignment.Bottom,modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.SpaceEvenly){
Button(onClick = {viewModel.refreshClick()}) {
Text(text = "refresh")
}
Button(onClick = {viewModel.addClick()}) {
Text(text = "add")
}
val a=if(viewModel.itemListMutableState.value!=null) viewModel.buttonsViewViewModel.buttonNext.visibility else 8

if(a==0){
Button(onClick = {viewModel.nextStateClick()}) {
Text(text = "next")
}
}


}

}

当列表项填满屏幕时,按钮就会消失..如何将按钮保持在屏幕底部?

许多应用程序需要显示项目集合。本文档介绍了如何在 Jetpack Compose 中高效地执行此操作。

如果您知道您的用例不需要任何滚动,您可能希望使用简单的列或行(取决于方向),并通过迭代列表来发出每个项目的内容,如下所示:

最佳答案

使用 weight() 方法,如下所示:

@Composable
fun ShowScreen(viewModel: UseListViewModel) {
Column(Modifier.fillMaxSize()) { // <-- new
ShowList(
modifier = Modifier.weight(1f), // <-- new
viewModel = viewModel
)
Buttons(viewModel)
}
}

@Composable
private fun ShowList(
modifier: Modifier, // <-- new
viewModel: UseListViewModel
) {
LazyColumn(modifier) { // <-- new
items(viewModel.itemListMutableState.value ?: emptyList()) {
ShowItem(it, viewModel)
}
}
}

@Composable
private fun ShowItem(item: IBaseDataModel, viewModel: UseListViewModel) {
Row(horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.background(Color(AppConstants.itemHolderBackgroundColor(item.state)))
.clickable { viewModel.selectItem(item) }
.fillMaxWidth()
) {
Text(text = item.idString)
Text(text = item.date1String)
Checkbox(
checked = item.isSelected,
onCheckedChange = { viewModel.setIsSelectedItem(item, it) })
Button(onClick = { viewModel.deleteItem(item) }) {
Text(text = "delete")
}
}


}

@Composable
private fun Buttons(viewModel: UseListViewModel) {
Row(
// verticalAlignment = Alignment.Bottom, // remove this
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceEvenly
) {
Button(onClick = { viewModel.refreshClick() }) {
Text(text = "refresh")
}
Button(onClick = { viewModel.addClick() }) {
Text(text = "add")
}
val a =
if (viewModel.itemListMutableState.value != null) viewModel.buttonsViewViewModel.buttonNext.visibility else 8

if (a == 0) {
Button(onClick = { viewModel.nextStateClick() }) {
Text(text = "next")
}
}
}
}

关于android - LazyColumn 如何与其他可组合项一起适应屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67762029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com