본문 바로가기

분류 전체보기

(24)
Kotlin 정규식 특수문자 replace (한글, 영문, 숫자만) fun main() { val s = "한반두오호Test@@String#123~`!@#$%^&*()_+-=[]{}:;,." val regex = Regex("[^A-Za-z0-9ㄱ-ㅎ가-힣]") val result = regex.replace(s, "") println(result) } 한반두오호TestString123
JetpackCompose 클릭 시 ripple 효과 없애기 클릭 했을 때 깜빡이는 효과 없애기 1. 클릭 막기 Modifier.clickable(interactionSource = MutableInteractionSource(), indication = null) 2. ripple만 막기 val interactionSource = remember { MutableInteractionSource() } modifier = Modifier.clickable(interactionSource = interactionSource, indication = null)
Jetpack Compose Textfield 센터 중앙 정렬에 관하여 역시 안드로이드 불친절하다. 별거 아닌걸로 시간 낭비하게 만든다. TextField에서 각자 원하는 높이가 있을 것이다. height를 200dp로 줘보자. 커서가 위에서부터 깜빡인다. 나는 균등하게 중앙에서 시작하고 싶다. padding, align... 별짓을 해봐도 안된다. 이 때는 singleLine을 true로 주면된다. singleLine = true, 코드 몇자로 해결은 되었다. 하지만 참 불친절하다. padding으로는 해결할 수 없는 것인가... 그리고 나는 입력되는 텍스트영역에 startPadding을 주고 싶다... 또 알아보러가자... 전체소스는 아래와 같다. @Composable fun MainView() { val textFieldValue = remember { mutableS..
Jetpack Compose TextField requestFocus 안될 때 FocusRequester().requestFocus()를 이용해서 TextField에 Focus를 주고 키보드가 올라오게 구현가능하다. 그런데 키보드를 다 사용하고 다른 Composable에 갔다오거나, 다른 UI에 의해 Focus를 잃으면 FocusRequester().requestFocus()를 사용해도 키보드가 올라오지 않는다. 이슈트래커에도 비슷한 이슈가 올라와있지만 뾰족한 방법은 없는듯 하다. 이럴땐 역시 야매로 처리한다. delay를 500ms 주고 처리하면 잘 동작한다. delay는 suspend fun이기 때문에 코루틴스코프를 이용해서 처리한다. 코루틴스코프 사용방법은 Jetpack Compose Scaffold(with SnackBar, CoroutineScope)편을 참고하자 (htt..
Jetpack Compose 화면 시작 시 키보드 올리기 안드로이드 참 불친절 하다. 컴포저블 호출 시, TextField에 자동으로 Focus주고 키보드 띄워주는 기능 SDK에서 기능을 제공해주면 얼마나 줗으려나. 어쨌든, 커스텀하게 작성해야 한다. 그래도 방식은 간단하다. LaunchedEffect를 이용해서 FocusRequester.requestFocus()를 주면 Focus가 On 되면서 키보드가 올라온다. 다만 delay가 없으면 실행이 안된다. Composition이 발생하고 그 끝나는 시점을 모르기 때문에 delay를 주는 것으로 해결했다. delay는 100ms에서 동작하지만 조금 러프하게 300ms로 주었다. val focusRequester = remember { FocusRequester() } TextField(value = "", on..
Jetpack Compose 키보드 상태 가져오기 안드로이드에서 키보드 관리는 꽤나 까다롭다. SDK에서 기본적으로 키보드 상태를 알려주면 좋으련만... Compose에서도 키보드가 올라왔을 때, 내려갔을 때 상태가 필요할 때가 있을 것이다. 기존 안드로이드에서 viewTreeObserver를 사용해 키보드 상태를 가져올 수 있었다. Compose에서도 마찬가지로 viewTreeObserver를 사용한다. 다만 소스코드는 기존보다 간결하다. @Composable fun MainView() { val keyboardState by keyboardAsState() Toast.makeText(LocalContext.current, "KeyBoard Show is $keyboardState", Toast.LENGTH_SHORT).show() Column( mo..
Jetpack Compose System UI Hidden 처리 System UI (statusBar, navigationBar)가 숨겨진 상태에서 터치업, 키보드 호출 했을 경우 System UI가 노출이 된다. 다시 숨기고 싶을 때 SystemUiController를 사용하면 된다. 1. 먼저 아래 디펜던시를 참고하여 build.gradle파일에 추가한다. (버전참고: https://google.github.io/accompanist/systemuicontroller/#download) repositories { mavenCentral() } dependencies { implementation "com.google.accompanist:accompanist-systemuicontroller:" } 2. Composable에서 SystemUiController를 ..
Kotlin 뒤로 버튼을 한번 더 누르면 종료됩니다. private var lastBackPressed = 0L if (lastBackPressed < SystemClock.elapsedRealtime() - 2000L) { lastBackPressed = SystemClock.elapsedRealtime() Toast.makeText(this, "뒤로 버튼을 한번 더 누르면 종료됩니다.", Toast.LENGTH_SHORT).show() return } finish()