키보드 옵션과 동작
키보드 유형, IME 동작과 포커스를 알아봅니다.
키보드 옵션과 동작은(는) CoddyKit의 무료 Android Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Android Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Android Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
용도에 맞는 키보드
완성도 높은 폼은 올바른 화면 키보드를 보여 줍니다. 전화번호에는 숫자 키보드를, 이메일에는 @ 키를, 필드 사이를 이동할 때는 "다음" 버튼을 보여 주는 식입니다. Compose에서는 KeyboardOptions와 KeyboardActions로 이 모든 기능을 제어합니다.
이 레슨에서는 키보드 형식과 IME 동작을 설정하고 필드 사이의 포커스를 관리합니다.
키보드 형식 선택하기
텍스트 필드에 KeyboardOptions를 전달하고 keyboardType을 설정하세요. 그러면 시스템이 데이터에 맞는 키보드를 표시합니다.
일반적인 값으로는 Text, Number, Email, Phone, Password가 있습니다.
var email by remember { mutableStateOf("") }
OutlinedTextField(
value = email,
onValueChange = { email = it },
label = { Text("Email") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Email
)
)숫자 키보드
수량이나 PIN에는 KeyboardType.Number를 사용하세요. 검증 레슨에서 배운 것처럼 입력 필터링을 함께 적용하면 숫자만 입력할 수 있습니다.
var pin by remember { mutableStateOf("") }
OutlinedTextField(
value = pin,
onValueChange = { pin = it.filter { c -> c.isDigit() } },
label = { Text("PIN") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number
)
)비밀번호 숨기기
비밀번호는 가려서 표시해야 합니다. 비밀번호 키보드 형식과 함께 visualTransformation = PasswordVisualTransformation()을 사용하세요.
상태에는 실제 문자가 그대로 저장되고, 화면에 표시될 때만 가려집니다.
var password by remember { mutableStateOf("") }
OutlinedTextField(
value = password,
onValueChange = { password = it },
label = { Text("Password") },
visualTransformation = PasswordVisualTransformation(),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Password
)
)IME 동작 버튼
키보드 오른쪽 아래의 키가 IME 동작 버튼입니다. imeAction으로 설정하세요. 다음 필드로 이동하려면 Next를 사용하고 마지막 필드에는 Done을 사용합니다.
OutlinedTextField(
value = name,
onValueChange = { name = it },
label = { Text("Name") },
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Next
)
)IME 동작에 응답하기
사용자가 해당 버튼을 눌렀을 때 반응하려면 KeyboardActions를 전달하세요. 각 동작(onNext, onDone, onSearch)은 직접 구현하는 람다입니다.
여기서는 Done을 누르면 키보드가 숨겨집니다.
val keyboard = LocalSoftwareKeyboardController.current
OutlinedTextField(
value = text,
onValueChange = { text = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { keyboard?.hide() }
)
)다음 필드로 포커스 이동하기
여러 필드로 이루어진 폼에서는 다음 버튼을 누르면 다음 필드로 이동해야 합니다. LocalFocusManager를 사용하고 moveFocus를 호출하세요.
val focusManager = LocalFocusManager.current
OutlinedTextField(
value = email,
onValueChange = { email = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(
onNext = { focusManager.moveFocus(FocusDirection.Down) }
)
)Done에서 포커스 지우기
마지막 필드에서 포커스를 지우면 키보드가 닫히고 필드 선택이 해제됩니다. onDone 안에서 focusManager.clearFocus()를 호출하세요.
OutlinedTextField(
value = password,
onValueChange = { password = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusManager.clearFocus() }
)
)프로그래밍 방식으로 포커스 요청하기
검색창처럼 화면이 나타나자마자 특정 필드에 포커스를 주고 싶은 경우가 있습니다. FocusRequester를 연결하고 LaunchedEffect에서 포커스를 요청하세요.
val focusRequester = remember { FocusRequester() }
LaunchedEffect(Unit) { focusRequester.requestFocus() }
OutlinedTextField(
value = query,
onValueChange = { query = it },
modifier = Modifier.focusRequester(focusRequester),
label = { Text("Search") }
)대문자화와 자동 수정
KeyboardOptions는 capitalization과 autoCorrectEnabled도 제어합니다. 이름에는 각 단어의 첫 글자를 대문자로 만들고, 사용자 이름에는 자동 수정을 꺼서 입력이 멋대로 바뀌지 않게 하세요.
OutlinedTextField(
value = fullName,
onValueChange = { fullName = it },
label = { Text("Full name") },
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.Words,
autoCorrectEnabled = false
)
)순수 Kotlin: IME 동작 선택하기
"마지막 필드를 제외한 모든 필드에는 Next, 마지막 필드에는 Done"이라는 로직은 일반 Kotlin으로 작성할 수 있습니다. 여기서는 필드 위치를 표시해야 하는 동작 레이블에 매핑합니다.
fun imeActionFor(index: Int, lastIndex: Int): String =
if (index == lastIndex) "Done" else "Next"
fun main() {
val fields = listOf("name", "email", "password")
fields.forEachIndexed { i, field ->
println("$field -> ${imeActionFor(i, fields.lastIndex)}")
}
}빠른 확인
키보드 오른쪽 아래 버튼에 "Next"가 표시되고, 누르면 아래 필드로 포커스가 이동하게 하려 합니다. 어떤 두 가지가 필요할까요?
복습
이제 키보드에 맞춰 동작하는 폼을 만들 수 있습니다.
KeyboardOptions로keyboardType,imeAction, 대문자화 및 자동 수정을 설정합니다.PasswordVisualTransformation으로 비밀번호를 가립니다.KeyboardActions로 Next, Done, Search 동작에 응답합니다.LocalFocusManager로 포커스를 이동하거나 지우고,FocusRequester로 필요할 때 필드에 포커스를 줍니다.
이로써 폼 제작 도구를 모두 익혔습니다. 입력, 상태, 검증, 키보드를 활용해 완성도 높고 사용하기 편한 Compose 폼을 만들 준비가 되었습니다.
AI 튜터와 함께 Kotlin을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 36
- 레슨
- 152
자주 묻는 질문
“키보드 옵션과 동작” 강의는 무료인가요?
네 — “키보드 옵션과 동작” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Android Academy 강의 전체를 잠금 해제할 수 있습니다. Android Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“키보드 옵션과 동작”에서 뭘 배우나요?
키보드 유형, IME 동작과 포커스를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Android Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Android Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Android Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“키보드 옵션과 동작” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Android Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Android Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- TextField와 사용자 입력
- 양식 상태 관리
- 입력값 검증
- 키보드 옵션과 동작