Container
Simple building block layer to be used as the base of any static, clickable or selectable component. Mimics the support of a Material Surface to work on CMP and Tv.
implementation("io.daio.wild:container:<version>")
Standard
You can use a Container
as a simple layer for grouping of components.
Container {
MyComponents()
}
Customisation
You can customise the Container
by overriding the default styling.
Container(
modifier = Modifier,
style = StyleDefaults.style(
colors = StyleDefaults.colors()
),
) {
MyComponents()
}
All customisation options support state based values for focus, pressed etc.
StyleDefaults.colors(
backgroundColor = Color.Blue,
contentColor = Color.White,
focusedBackgroundColor = Color.Red,
pressedBackgroundColor = Color.Green,
disabledBackgroundColor = Color.Gray.copy(alpha = .6f),
focusedDisabledBackgroundColor = Color.Red.copy(alpha = .6f),
)
Clickable
If you want to make any Container
an interactive element, you can do so by passing an
onClick
or onLongClick
callback.
Container(
onClick = {
println("Clicked")
}
) {
MyComponents()
}
After passing in an onClick
/onLongClick
The Container
will become a focusable and clickable
target. This makes the Container
a perfect building block for Buttons or larger clickable
Composables that you may need in your design system.
Selectable
A SelectableContainer
offers another layer to support a selected state. It works the same way
as a Container
that has been made clickable with the additional selected
param available to
set the Container
state to "selected".
var selected by remember { mutableStateOf(false) }
SelectableContainer(
selected = selected,
onClick = {
selected = !selected
}
) {
MyComponents()
}
Use this component to build up your own selectable Composables.
Platform | Available |
---|---|
CMP | ✅ |
Android Tv | ✅ |
You can see the full api here