理解出来てなかった部分のメモ
materialとmaterial3では色指定方法が若干違う
material→MaterialTheme.colors.secondary
material3→MaterialTheme.colorScheme.secondary
ダークテーマの確認
Composeの前に以下でプレビューにも表示される @Preview( uiMode = Configuration.UI_MODE_NIGHT_YES, showBackground = true, name = "Dark Mode" )
リスト
LazyColumnに必要な情報のリストを渡して表示
ここでは表示するMessageCardの中に各要素を表示するTextを置いている
SampleDataはMessageのリスト
data class Message(val author: String, val body: String) @Composable fun MessageCard(msg: Message) { Row(modifier = Modifier.padding(all = 8.dp)) { Image( painter = painterResource(id = R.drawable.profile_picture), contentDescription = "Contact profile picture", modifier = Modifier .size(40.dp) .clip(CircleShape) .border(1.5.dp, MaterialTheme.colorScheme.secondary, CircleShape) ) Spacer(modifier = Modifier.width(8.dp)) Column { Text( text = msg.author, color = MaterialTheme.colorScheme.secondary, style = MaterialTheme.typography.titleSmall ) Spacer(modifier = Modifier.height(4.dp)) Text(text = msg.body) } } } @Composable fun Conversation(messages: List<Message>) { LazyColumn { items(messages) { message -> MessageCard(msg = message) } } } @Preview @Composable fun PreviewConversation() { ComposeTutorialTheme() { Conversation(messages = SampleData.conversationSample) } }
Composeの状態
remember, mutableStateOf等を使って状態を監視、変更できる
var isExpanded by remember { mutableStateOf(false) } Column(modifier = Modifier.clickable { isExpanded = !isExpanded }) { Text( text = msg.author, color = MaterialTheme.colors.secondaryVariant, style = MaterialTheme.typography.subtitle2 ) ...省略 )