I solve like this to show border or hide border.
package com.abc.app.common.composables
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.material.Divider
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.tooling.preview.Preview
import com.abc.app.R
import com.abc.app.theme.Cloudy
import com.abc.app.theme.AbcTheme
import com.abc.app.theme.Red
@Composable
fun <T : Any> LazyListScopeColumn(
itemList: List<T>,
content: @Composable (T: Any) -> Unit,
dividerColor: Color = Cloudy,
dividerThickness: Int = R.dimen.separator_height_width,
showDivider: Boolean = true,
) {
LazyColumn(modifier = Modifier.fillMaxWidth()) {
itemsIndexed(itemList) { index, item ->
if (index == 0 && showDivider) {
Divider(color = dividerColor, thickness = dimensionResource(dividerThickness))
}
content(item)
if (index <= itemList.lastIndex && showDivider) {
Divider(color = dividerColor, thickness = dimensionResource(dividerThickness))
}
}
}
}
@Preview(showBackground = true)
@Composable
fun LazyColumnListScopePreview() {
AbcTheme {
Column {
Spacer(modifier = Modifier.height(10.dp)
LazyListScopeColumn(
listOf("item 1", "item 2"),
content = { item ->
Text(
text = "$item",
modifier = Modifier.padding(vertical = 10.dp)
)
},
dividerColor = Red,
)
Spacer(modifier = Modifier.height(10.dp))
}
}
}
@Preview(showBackground = true)
@Composable
fun LazyColumnListScopePreviewNoBorder() {
AbcTheme {
Column {
Spacer(modifier = Modifier.height(10.dp)
LazyListScopeColumn(
listOf("item 1", "item 2"),
content = { item ->
Text(
text = "$item",
modifier = modifier = Modifier.padding(vertical = 10.dp))
},
dividerColor = Red,
showDivider = false,
)
Spacer(modifier = Modifier.height(10.dp))
}
}
}