📝
Jetpack Composeであれってどうやるんだっけメモ
これは何?
Android Viewで行っていた諸々をJetpack Composeでやるための自分用備忘録。
随時追記していきます。
Text
打消し線をあてたい
buildAnnotatedStringで装飾したAnnotatedString型の値をTextの第1引数に渡してやる。
ちなみにソースを見たところ通常利用しているTextは第1引数がString型だった。
Text(
buildAnnotatedString {
withStyle(
SpanStyle(
textDecoration = TextDecoration.LineThrough
)
) {
append("hoge")
}
}
)
こうやって汎用的にしておくのもありかも。
@Composable
fun StrikethroughText(text: String) {
val annotatedString = buildAnnotatedString {
withStyle(style = SpanStyle(textDecoration = TextDecoration.LineThrough)) {
append(text)
}
}
Text(text = annotatedString)
}
AlertDialog
ボタンを押しても閉じない
ボタンを押せば閉じるAndroid Viewのダイアログと異なり、Jetpack Composeのダイアログは表示フラグをOFFにしてやる必要がある。
それぞれのボタンのonClickでonDismissが実行されるようにし、呼び出し元でフラグをOFFにしてやる必要があり。
@Composable
fun SampleDialog(
onDismiss: () -> Unit
) {
AlertDialog(
title = {
Text("title")
},
text = {
Text("message")
},
confirmButton = {
TextButton(
onClick = {
onDismiss()
}
) {
Text("OK")
}
},
dismissButton = {
TextButton(
onClick = {
onDismiss()
}
) {
Text("Cancel")
}
}
}
setCancellable(false)したい
AlertDialogにはsetCancellable項目がない。
代わりにバックキーや外部をタップしたときに呼ばれるonDismissRequestを空にしておく。
逆にsetCancellable(true)したいときには、onDismissRequestの中で上述のonDismissを読んでやれば同等の挙動になる。
Discussion