일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 어댑터 효율적으로 사용하기
- compose
- fragment
- DiffUtilCallback
- Kotlin
- 키보드 숨기기
- 안드로이드
- HotStream
- 안드로이드 DB
- 다른버전 다운로드
- 뷰모델팩토리
- 클린아키텍처
- SQLite
- koltin
- 코틀린
- 의존성주입
- ColdStream
- error
- 계층 분리
- 화면전환
- Clean Architecture
- 앱개발
- list adapter
- android aac
- Android
- 안드로이드 스튜디오 구버전 다운받기
- notifyDataSetChanged 대신 사용하기
- hilt
- DI
- notifyDataSetChanged 비효율
Archives
- Today
- Total
DoReMi
[Kotlin] 키보드 이벤트 본문
▶ 키보드 조작
▶ 예시
메인 액티비티에서 다음과 같은 변수 선언
// 키보드 관리자
lateinit var inputMethodManager:InputMethodManager
메인 액티비티 클래스 안에서 밑의 두개의 메소드를 선언하고 다른 화면에서 가져다 쓰는 형태로 사용.
// 키보드를 올려주는 메서드
fun showSoftInput(view:View, delay:Long){
view.requestFocus()
thread {
SystemClock.sleep(delay)
inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
}
// 키보드를 내려주는 메서드
fun hideSoftInput(){
if(currentFocus != null){
inputMethodManager.hideSoftInputFromWindow(currentFocus?.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
}
}
입력 후 키보드 사라지게 만들기
EditText 입력 이후 엔터 터치 시 키보드가 사라지면서 포커스를 해제한다
// 키보드를 내린다
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
if(currentFocus != null) {
imm.hideSoftInputFromWindow(currentFocus!!.windowToken, 0)
}
// 포커스를 해제한다.
currentFocus!!.clearFocus()
EditText에서 엔터키 누르면 다음 포커스로 커서 이동
// 엔터키를 눌렀을 때의 이벤트
setOnEditorActionListener { v, actionId, event ->
// true를 반환하면 엔터키 누른 후에 포커스가 현재 EditText로 유지된다.
// false를 반환하면 엔터키 누른 후에 다음 EditText로 포커스가 이동한다.
false
}
키보드 나타내기
activityMainBinding.run 에서 작성
// 키보드가 나타나게 한다.
editTextText.requestFocus()
// 현재 EditText에 포커스를 준다.
requestFocus()
// 현재 포커스를 가지고 있는 View와 연결된 키보드를 올라오게 한다.
// onCreate 메서드가 끝나야 화면이 나타나는데 그 전에 키보드가 올라오게 하는
// 명령을 전달하기 때문에 무시된다. 이에, 쓰래드로 운영을 한다.
thread {
// 500ms 쉬게 한다.
SystemClock.sleep(500)
// onCreate 메서드의 수행이 끝날 때 까지 대기한다.
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(currentFocus, 0);
}
editTextText.run{
// 현재 EditText에 포커스를 준다.
requestFocus()
// EditText에 새로운 문자열을 설정한다.
}
// 첫 번째 EditText에 포커스를 준다.
editTextName.requestFocus()
thread {
SystemClock.sleep(500)
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(currentFocus, 0)
}
'Android > 개념' 카테고리의 다른 글
[Kotlin] Coil 라이브러리 (0) | 2023.11.19 |
---|---|
[Kotlin] 파이어베이스 사용 코드 예시 (0) | 2023.09.14 |
[Kotlin] Firebase Console (0) | 2023.07.31 |
[Kotln] 네이버 지도 API 사용법 (0) | 2023.07.26 |
[Kotlin] Fragment - 프래그먼트(분기) (0) | 2023.07.25 |