Skip to content

Instantly share code, notes, and snippets.

@ColtonIdle
Created January 4, 2021 17:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ColtonIdle/85db918c763076cbb147b722e6807007 to your computer and use it in GitHub Desktop.
Save ColtonIdle/85db918c763076cbb147b722e6807007 to your computer and use it in GitHub Desktop.
compose trial run
@ExperimentalAnimationApi
class ComposeTrial : BaseFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View = ComposeView(requireContext()).apply {
val model = ViewModelProviders.of(this@ComposeTrial, ComposeTrialViewModelFactory())
.get(ComposeTrialViewModel::class.java)
model.getItems()!!.observe(viewLifecycleOwner, {
setContent {
ComposeTrialScreen(response = it)
}
})
}
}
@ExperimentalAnimationApi
@Composable
fun ComposeTrialScreen(response: ServerResponse) {
Surface(color = MaterialTheme.colors.background) {
LazyColumn {
item {
Text(text = "Header", style = TextStyle(color = MaterialTheme.colors.primary, fontSize = 32.sp))
}
response.sections.forEach { section: ServerResponse.Section ->
item {
MyHeader(text = section.title)
}
items(section.posts) {
MyItem(text = it.question, hiddenText = it.answer)
}
}
item {
Text(
modifier = Modifier.padding(16.dp).fillMaxWidth(),
textAlign = TextAlign.Center,
text = "Trying a footer",
style = TextStyle(color = Color.Magenta, fontSize = 12.sp)
)
}
}
}
}
@Composable
fun MyHeader(text: String) {
Text(text = text, fontWeight = FontWeight.Bold, style = TextStyle(fontSize = 24.sp))
}
@ExperimentalAnimationApi
@Composable
fun MyItem(text: String, hiddenText: String) {
var visibility by remember { mutableStateOf(false) }
Column {
Surface(color = androidx.compose.ui.graphics.Color.Red) {
ClickableText(text = AnnotatedString(text), onClick = { visibility = !visibility })
}
AnimatedVisibility(visible = visibility) {
Surface(color = androidx.compose.ui.graphics.Color.Blue) {
Text(text = hiddenText)
}
}
Divider()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment