일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MiTweet
- 쿠링
- 백준
- 프로그래머스
- Coroutine
- Coroutines
- Kotlin
- livedata
- 코루틴
- Compose
- Rxjava
- GitHub
- textfield
- android
- architecture
- pandas
- Codeforces
- AWS
- Hilt
- relay
- MyVoca
- TEST
- androidStudio
- Gradle
- 코드포스
- NGINX
- 암호학
- ProGuard
- Python
- boj
- Today
- Total
목록Compose (29)
이동식 저장소
``Density`` 객체에는 ``Float`` 타입의 ``fontScale`` 프로퍼티가 선언되어 있다. 공식 문서에서는 다음과 같이 설명하고 있다. The logical density of the display. This is a scaling factor for the Dp unit. 시스템 설정의 ``글자 크기`` 항목이 바로 이 fontScale을 설정하는 것이다. UI에서 설정한 ``sp`` 값에 fontScale을 곱하면 실제로 UI에 보일 글씨 크기를 얻을 수 있다. 기본값은 1.0이고, 최댓값은 2.0이다. 블린더 앱에서는 ``fontScale``의 값에 따라 서로 다른 UI를 보여주었다. fontScale이 일정 값 이상이라면 기본 UI 대신 저시력 UI를 보여준다. 저시력 UI는 예쁜..
문제 초기 문자열이 있는 ``TextField``를 다음과 같이 선언하였다. @LightPreview @Composable private fun TextFieldPreview() { var textFieldValue by remember { mutableStateOf("검색하세요") } KuringTheme { TextField( value = textFieldValue, onValueChange = { textFieldValue = it } ) } } 프리뷰를 실행해 보면, 처음부터 문자열이 있음에도 불구하고(``검색하세요``) 커서가 맨 앞에 있는 모습을 확인할 수 있다. 실제로는 문자열의 맨 끝에 와야 자연스럽다. 원인 원인을 파악하기 위해 ``TextField``의 내부 구현을 뜯어보자. 우선, ..
``Modifier.minimumInteractiveComponentSize()``를 적용하면 된다. 이 modifier는 composable의 최소 크기를 각 기기의 'clickable 요소의 최소 크기'로 지정한다. 보통 48dp×48dp이지만, 기기에 따라 다를 수도 있다. (태블릿 등?) Before & After ``Icon``에 적용해 보자. Icon( imageVector = Icons.Default.ChevronRight, contentDescription = null, tint = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), modifier = Modifier.minimumInteractiveComponent..
여기 간단한 ``TabRow``가 하나 있다. 그런데 하단 탭 영역을 스와이프하여 넘기면 선택된 탭의 텍스트 색이 바뀌지 않고, 와중에 tab indicator만 움직인다. 원인 일단 전체 코드를 보자. @OptIn(ExperimentalFoundationApi::class) @Composable private fun SubscriptionTabs( selectedTab: EditSubscriptionTab, onTabClick: (EditSubscriptionTab) -> Unit, categories: List, departments: List, onCategoryClick: (Int) -> Unit, onDepartmentClick: (String) -> Unit, onAddDepartmentBut..
Compose로 복잡한 UI를 개발하다 보면, 함수의 매개변수가 너무 많아지는 문제가 발생한다. 특히 Activity에서 호출하는 최상위 Composable은 매개변수가 많아질 수밖에 없다. // EditSubscriptionActivity.kt binding.composeView.setContent { val uiState by viewModel.uiState.collectAsState() KuringTheme { Subscriptions( selectedTab = uiState.selectedTab, categories = uiState.categories, departments = uiState.departments, onTabClick = viewModel::onTabClick, onCategor..