android - 如何在 LazyColumn 列文本中的两个不同文本中交替颜色
问题描述
如何在 LazyColumn 列文本中的两个不同文本中交替颜色。按照下面的代码
LazyColumn(/*contentPadding = PaddingValues(horizontal = 16.dp, vertical = 8.dp),*/
modifier = Modifier.fillMaxSize()
) {
items(50) {index ->
Text("R$ 120,00/UN", fontSize = 13.sp,
color = if(selectd==index) colorResource(id = R.color.red)
else colorResource(id = R.color.white),
modifier = Modifier
.border(1.dp, Color.LightGray, RoundedCornerShape(4.dp))
.background(if(selectd==index) colorResource(id = R.color.pastel_green)
else colorResource(id = R.color.cinza))
.padding(5.dp)
.clickable { selectd=index})
Text("R$ 120,00/KG", fontSize = 13.sp,
color = if(selectd==index) colorResource(id = R.color.red)
else colorResource(id = R.color.white),
modifier = Modifier.border(1.dp, Color.LightGray, RoundedCornerShape(4.dp))
.background(if(selectd==index) colorResource(id = R.color.pastel_green)
else colorResource(id = R.color.cinza))
.padding(5.dp)
.clickable { selectd=index})
}
}
解决方案
您可以使用itemsIndexed
而不是index
.
就像是:
val itemsList = (0..12).toList()
LazyColumn(
modifier = Modifier.fillMaxSize()
) {
itemsIndexed(itemsList) { index, item ->
val backgroundColor = if (selectd == index) Color.Blue
else{
if (index % 2 == 0) Color.Yellow else Color.Red
}
Text("R$ 120,00/UN", fontSize = 13.sp,
modifier = Modifier
.border(1.dp, Color.LightGray, RoundedCornerShape(4.dp))
.background(backgroundColor)
.padding(5.dp)
.clickable { selectd=index})
}
}
推荐阅读
- python - 从 Facebook 下载数据时的空事件列表
- ajax - iron-ajax 请求导致 spring boot 出现 cors 问题
- angular - Angular 5 路由器在谷歌登录回调中无法正常工作
- java - Selenium WebDriver - 单击“保存”按钮后应用程序变得无响应
- tensorflow - 对张量流的动态 rnn 版本中序列长度的混淆
- c++ - StackString 的 Chromium stack_container 不能工作(至少在 VisualC++ 中)
- java - 自动调整默认形状
- laravel - Laravel:JWT 令牌已过期
- mysql - 连接 MySQL 数据库时出错
- symfony - Symfony 3,缓存:清除错误连接超时