android compose tableview/controllist

@Preview
@Composable
fun TableView(
    modifier: Modifier = Modifier,
    headers:List<String> = listOf("col1","col2","col3"),
    columnWeights:List<Float> = listOf(0.5f,0.5f,0.5f),
    dataList:List<List<String>> = listOf(listOf("data1","data2"), listOf("data3","data4"))
    ) {
    Column (modifier=modifier){
        var size = headers.size
        var sizeWeight = columnWeights.size
        
        if(size>sizeWeight)
            Log.d("scoreInfo","input settings is wrong!")
        else
        {
            LazyColumn {
                item {
                    Row(
                        modifier=Modifier.fillMaxWidth().background(Color.Gray)
                    ) {
                        headers.forEachIndexed { index, header ->
                            UserTableCell(modifier=Modifier.weight(columnWeights[index]),text= header,isHeader= true)
                        }
                    }
                }

                dataList.forEach {
                    item {
                        var isSelected by remember { mutableStateOf(false) }
                        Row(
                            modifier = Modifier.fillMaxWidth()
                                .clickable {
                                    isSelected=!isSelected
                                }
                                .background(if(isSelected) Color.LightGray else Color.White)

                        ) {
                            var sizeData = it.size
                            it.forEachIndexed{ index,data->
                                UserTableCell(modifier=Modifier.weight(columnWeights[index]),text= data, isSelected = isSelected)
                            }
                            for(i in it.size .. size-1)
                            {
                                UserTableCell(modifier=Modifier.weight(columnWeights[i-1]),text= "", isSelected = isSelected)
                            }
                        }

                    }

                }





            }
        }

    }
}
val textStyle = androidx.compose.ui.text.TextStyle(
    fontSize = 20.sp,
    fontWeight = FontWeight.Normal,
    color = Color.Black,
    letterSpacing = 0.1.sp,
)

val selectedTextStyle = androidx.compose.ui.text.TextStyle(
    fontSize = 20.sp,
    color = Color.Red,
    letterSpacing = 0.1.sp,
)

val headersTextStyle = androidx.compose.ui.text.TextStyle(
    fontSize = 20.sp,
    color = Color.Black,
    fontWeight = FontWeight.Bold,
    letterSpacing = 0.1.sp,
)
@Composable
fun UserTableCell(
    modifier: Modifier=Modifier,
    text: String="",
    isHeader:Boolean=false,
    isSelected:Boolean=false
) {
    Text(
        modifier = modifier.fillMaxSize()
            .border(1.dp, Color.Black)
            .padding(8.dp)
        ,
        text = text,
        style = if(isHeader) headersTextStyle else if(isSelected) selectedTextStyle else textStyle,
        textAlign = TextAlign.Center
    )
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lph009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值