Mám Composable funkce pro operační systém infos, která rozšiřuje detaily na klepněte na tlačítko a vrátí při opětovném kliknutí.
@ExperimentalAnimationApi
@Composable
fun OSCard(os: OS) {
var expanded by remember {
mutableStateOf(false)
}
Column(modifier = Modifier
.clickable { expanded = !expanded }
.fillMaxWidth()) {
Text(
modifier = Modifier
.padding(20.dp),
text = os.name,
style = MaterialTheme.typography.h6
)
AnimatedVisibility(visible = expanded) {
Text(text = os.description, modifier = Modifier.padding(20.dp))
}
Divider(Modifier.height(2.dp))
}
}
Vytvořil jsem seznam a prošel přes LazyColumn
var OSs = listOf<OS>(
OS(
"Android",
"Android is a mobile/desktop operating system..."
),
OS(
"Microsoft Windows",
"Microsoft Windows, commonly referred to as Windows..."
),
OS(
"Linux",
"Linux is a family of open-source Unix-like operating systems..."
)
)
Surface(color = MaterialTheme.colors.background) {
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(items = OSs){
os -> OSCard(os)
}
}
}
Když to funguje, jak se očekávalo, chci, aby to bylo takové, že pokud kartu je otevřen a další karta je vybrána, dříve otevřené karty bude uzavřen.
To je to, co jsem se chtěl vyhnout, může mi někdo dát tip na to, jak na to?