Material surface is the central metaphor in material design.
ClickableSurfaceSample
@OptIn(ExperimentalMaterialApi::class)
@Composable
fun ClickableSurfaceSample() {
var count by remember { mutableStateOf(0) }
Surface(onClick = { count++ }, color = MaterialTheme.colors.background) {
Text("Clickable surface Text with `onBackground` color and count: $count")
}
}
SelectableSurfaceSample
@OptIn(ExperimentalMaterialApi::class)
@Composable
fun SelectableSurfaceSample() {
var selected by remember { mutableStateOf(false) }
Surface(
selected = selected,
onClick = { selected = !selected },
color = MaterialTheme.colors.background,
) {
Text(text = if (selected) "Selected" else "Not Selected", textAlign = TextAlign.Center)
}
}
SurfaceSample
@Composable
fun SurfaceSample() {
Surface(color = MaterialTheme.colors.background) { Text("Text color is `onBackground`") }
}
ToggleableSurfaceSample
@OptIn(ExperimentalMaterialApi::class)
@Composable
fun ToggleableSurfaceSample() {
var checked by remember { mutableStateOf(false) }
Surface(
checked = checked,
onCheckedChange = { checked = !checked },
color =
if (checked) {
MaterialTheme.colors.primary
} else {
MaterialTheme.colors.background
},
) {
Text(text = if (checked) "ON" else "OFF", textAlign = TextAlign.Center)
}
}