728x90
반응형
열과 행 만들기
Compose 세 가지 기본 표준 레이아웃 요소ColumnRowBox 이런 요소는 내부에 항목을 배치할 수 있다예를 들어 Column 내부의 각 하위 요소는 세로로 배치된다@Composablefun MyApp(modifier: Modifier = Modifier) { Surfa
joyshu93.tistory.com
상호작용을 추가를 위해 앞서 진행한 내용을 토대로 진행하려고 한다
Button의 상태를 저장 및 추적하기 위해 코드를 수정
- expanded라는 값을 Compose에서 추적하기 위해서는 mutableStateOf 함수를 사용해야 한다
- 그리고 그 상태를 기억하기 위해서는 remember를 사용해야 한다
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
val expanded = remember { mutableStateOf(false) } // expanded 값 추가
Surface(
...)) {
Row(modifier = Modifier.padding(24.dp)) {
Column(modifier = Modifier.weight(1f)) {
...
}
ElevatedButton(onClick = { expanded.value = !expanded.value }) { // 상태변화에 따른 행동 설정
Text(if (expanded.value) "Show less" else "Show more")
}
}
}
}
추가 변수를 추가해 항목 펼치기 만들기
- extraPadding 변수를 추가하여 Column의 padding이 가변되도록 수정
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
val expanded = remember { mutableStateOf(false) }
val extraPadding = if (expanded.value) 48.dp else 0.dp // 추가 변수
Surface(
color = MaterialTheme.colorScheme.primary,
modifier = modifier.padding(vertical = 4.dp, horizontal = 8.dp)) { // extraPadding 적용
Row(modifier = Modifier.padding(24.dp)) {
Column(modifier = Modifier.weight(1f).padding(bottom = extraPadding)) {
...
}
ElevatedButton(onClick = { expanded.value = !expanded.value }) {
...
}
}
}
}
728x90
반응형
'안드로이드 학습(Compose)' 카테고리의 다른 글
LazyColumn, LazyRow의 특징 및 사용 (0) | 2025.03.04 |
---|---|
상태 호이스팅 (0) | 2025.03.04 |
열과 행 만들기 (0) | 2025.03.04 |
간단한 버튼 동작 구현해보기 (0) | 2025.03.04 |
안드로이드 Compose와 기존 방식(XML + View) 비교 (1) | 2025.03.04 |