EditText에 입력을 할 때 핸드폰의 키패드가 올라오게 됩니다. 이 때, 뷰의 하단에 있는 UI가 키패드가 올라옴에 따라 어떻게 보이길 원하나요? 보이는게 좋은가요? 아니면 가려지길 바라나요? 이번 글에선 이부분을 다뤄보겠습니다.

 

먼저 아래와 같은 뷰가 있습니다.

 

 

 

이 때 EditText에 입력을 하는데 RecyclerView가 키패드와 같이 따라 올라와 뷰가 이상해집니다.

이 문제는 어렵지 않게 해결할 수 있습니다. 

 

AndroidManifest.xml 파일에서는 키패드가 나타날 때 UI를 어떻게 처리할지 정할 수 있습니다.

 

AndroidManifest.xml 파일로 이동하여 해당 액티비티에 아래와 같은 속성을 적용해줍니다.

android:windowSoftInputMode="adjustPan"

이 속성은 키패드가 올라올 때 UI를 덮도록 설정해 줍니다.

android:windowSoftInputMode="adjustNothing"

이 속성도 UI와 관계없이 키패드가 올라오도록 해줍니다.

 

 

만약 UI가 잘리지 않고 그대로 보여지고 싶다면 아래와 같이 속성을 적용해주면 됩니다.

android:windowSoftInputMode="adjustResize"

 

'Android' 카테고리의 다른 글

@JvmOverloads  (0) 2020.12.15
@JvmOverloads  (0) 2020.12.15
[Android] 테스트  (0) 2020.04.11
[Android] Gradle  (0) 2020.04.10
[Android] ContentProvider, Service, BroadcastReceiver  (0) 2020.04.03

EditText 속성

 - background 값에 @null을 추가한다.


EditText 활성화, 키패드 보이기, 커서 위치 이동

editText.isFocusableInTouchMode = true
editText.isFocusable = true
editText.selection(editText.length()) // 커서 위치 이동하기

// 키패드 보이기
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(eidtText, 0)

EditText 비활성화, 키패드 숨기기

editText.isClickable = false
editText.isFocusable = false

// 키패드 숨기기
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(edit_nickname_editmyinfo_a.windowToken, 0)

Reference

 - https://nuggy875.tistory.com/10

 - https://philip1994.tistory.com/12

 - https://programmingsummaries.tistory.com/30

 

+ Recent posts