Skip to content

Instantly share code, notes, and snippets.

@Khazbs
Last active May 21, 2024 15:47
Show Gist options
  • Save Khazbs/22920a87115c9f2941a4ca8fce1eb609 to your computer and use it in GitHub Desktop.
Save Khazbs/22920a87115c9f2941a4ca8fce1eb609 to your computer and use it in GitHub Desktop.
import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.outlined.FavoriteBorder
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.*
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@OptIn(ExperimentalLayoutApi::class, ExperimentalMaterial3Api::class)
@Preview
@Composable
private fun Test() {
Scaffold(
topBar = { TopAppBar({ Text("Check Out the Weight Modifier") }) },
) { padding ->
Card(Modifier.padding(padding)) {
var favorite by rememberSaveable { mutableStateOf(false) }
var expanded by rememberSaveable { mutableStateOf(false) }
Text(
text = lipsum,
modifier = Modifier
.padding(16.dp)
.animateContentSize()
.verticalScroll(rememberScrollState())
.run { if (expanded) weight(1f) else heightIn(max = previewMaxHeight) }
)
FlowRow (Modifier.padding(bottom = 16.dp, start = 16.dp, end = 16.dp)) {
FlowRow (Modifier.weight(1f)) {
TextButton({ expanded = !expanded }) {
Text(if (expanded) "Collapse" else "Read more…")
}
}
FlowRow {
IconButton({ favorite = !favorite }) {
Icon(
imageVector = when {
favorite -> Icons.Filled.Favorite
else -> Icons.Outlined.FavoriteBorder
},
contentDescription = "Favorite",
)
}
}
}
}
}
}
private val previewMaxHeight = 64.dp
private const val lipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut magna mauris, mattis malesuada magna sit amet, pulvinar mollis ex. In hac habitasse platea dictumst. Proin et risus venenatis, hendrerit elit at, commodo augue. Aliquam eget felis quis erat interdum iaculis et id ligula. Nunc velit ligula, feugiat sed porttitor vel, porttitor in ligula. Curabitur non efficitur massa, interdum pulvinar felis. Donec mollis lacus turpis, sed ornare purus placerat id. Pellentesque vitae sapien sed nunc rhoncus fringilla ut non orci. Mauris dolor massa, ornare in iaculis nec, lobortis id lacus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.\n\nNulla convallis, libero non maximus lacinia, velit libero imperdiet dolor, vitae cursus elit lectus ornare velit. Nam augue massa, convallis tincidunt aliquet et, sodales vitae velit. Pellentesque vestibulum magna vel diam fermentum pharetra. Nullam quis risus sit amet purus molestie mollis. Etiam malesuada dolor vel turpis mattis laoreet. Nunc ante eros, varius at dictum eget, vestibulum sed ipsum. Nulla eu consequat enim. Nulla auctor placerat porta. Nunc accumsan ultricies finibus. Cras ac lobortis lacus. Donec augue arcu, convallis lacinia erat ac, finibus lacinia quam. Etiam non viverra orci, et consectetur ex. Suspendisse bibendum lacinia ex. Sed lacinia libero vel tincidunt facilisis.\n\nAenean porta viverra varius. Sed vulputate tempor augue nec condimentum. Praesent nec maximus ipsum. Ut eu leo facilisis, scelerisque magna eget, vulputate augue. Etiam cursus viverra turpis, quis hendrerit justo consequat in. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Ut egestas purus quis ante aliquam, euismod aliquam purus auctor. Aenean eu mollis enim. Etiam et convallis massa. Nam auctor sapien nec accumsan faucibus. Vestibulum lacinia nulla a sapien rhoncus, eu commodo libero sagittis. Aenean dictum feugiat augue, in porta leo aliquam eu.\n\nAliquam accumsan malesuada risus in laoreet. Vestibulum a maximus purus. Sed ut dignissim arcu, non bibendum velit. Praesent hendrerit condimentum ex, in egestas felis blandit eu. Duis scelerisque semper nisl, sed suscipit metus rhoncus eget. Sed eget bibendum massa. Nulla varius nisl justo, vitae dictum metus convallis eu. Fusce et diam viverra, bibendum orci congue, condimentum arcu. Aenean ultrices nunc urna, ut rutrum libero sollicitudin vel. Donec justo quam, interdum non lacus ornare, sagittis facilisis turpis. Fusce at massa mauris.\n\nNunc ac tincidunt felis, vel ornare arcu. Pellentesque rutrum dignissim odio, vel cursus nibh scelerisque quis. Etiam sit amet auctor ante. Cras faucibus sapien in tincidunt venenatis. Duis ut orci vel elit volutpat efficitur at vel ipsum. Maecenas quis purus urna. Quisque tempus aliquam urna nec egestas. Morbi et dictum metus. Ut consectetur gravida enim, at dapibus ligula dictum sit amet. Morbi et lacinia massa. Curabitur in tortor sem. Fusce at tincidunt ipsum."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment