【Android】 키보드의 레이아웃 푸시 설정이 반영되지 않는다.
소개
"키보드를 내면 EditText 아래에 배치하고 있는 view가 숨어 보이지 않게 된다."
라고 하는 버그를 고치는데, 엄청 시간이 걸렸다.
결국 매우 한정적인 장면에서만 발생하는 사안이었지만, 빠지면 전혀 눈치채지 않을 것 같은 원인이었으므로 공유.
어떤 상황?
EditText 아래에 표시하고 있는 "0/1000"이 키보드로 숨어 있는 것을 알 수 있다.
이것은 전혀 카운터의 의미가 없다.
키보드 표시 중에도 보이도록 해두고 싶다.
조사하면
엄청 나온다.
【참고】
h tps:// 퀵했다. 작은 m/미 rd_ 낚시 my/있어 MS/3709d607C4 그림 c88 아 d9 그림 71
h tp : // 체로. 하테나 bぉg. 코m/엔트리/2013/07/10/012738
h tps://지와신. bgs포 t. 이 m/2013/02/안 d로이로ぢtゔぃ에w. HTML
자세한 것은 참고의 기사를 보고 싶지만, 대략적으로 정리하면 하지 않으면 안되는 것은 아래와 같은 2개.
1. AndroidManifest.xml의 해당 Activity를 android:windowSoftInputMode="adjustResize"
로 설정합니다.
2. 해당 Activity 레이아웃의 루트 ViewGroup을 android:fitsSystemWindows="true"
로 설정합니다.
참고로 수정해 보았지만 여전히 고쳐지지 않았다.
따로 원인이 있는 거 아닐까 생각했다.
화면을 잘 살펴보면
한 번 더 키보드를 냈을 때의 화면을 잘 살펴본다.
뭔가 Toolbar도 사라지지 않았습니까?
라고 하는지 그것보다, StatusBar가 나오지 않는다.
화면 아래에 딱 눈이 가고 있었지만, 거기가 아닌 느낌이 들었다.
코드를 보면
이 화면에 가기 전에, StatusBar를 숨기는 처리를 실행하고 있었다.
private fun hideStatusBar() {
val imm = activity?.getSystemService(Cotnext.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view?.windowtoken, InputMethodManager.HIDE_NOT_ALWAYS)
view?.clearFocus()
}
시험에 이 화면에 들어갈 때 StatusBar를 내는 처리를 넣어 본다.
private fun showStatusBar() {
activity?.let {
it.window.clearFlags(WindowManager.layoutParam.FLAG_FULLSCREEN)
val decor = it.window.decorView
decor.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_IMMERSIVE)
}
}
그러면
했다.
색이 어색한 것은 신경쓰지 말고 싶다.
요약
private fun hideStatusBar() {
val imm = activity?.getSystemService(Cotnext.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view?.windowtoken, InputMethodManager.HIDE_NOT_ALWAYS)
view?.clearFocus()
}
private fun showStatusBar() {
activity?.let {
it.window.clearFlags(WindowManager.layoutParam.FLAG_FULLSCREEN)
val decor = it.window.decorView
decor.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_IMMERSIVE)
}
}
결국 조금 깊이 파고 조사해 보았지만, 제대로 된 원인까지는 몰랐다.
아는 사람이 있으면 가르쳐 주었으면 한다.
이것으로 일건 낙착. 만나서.
Reference
이 문제에 관하여(【Android】 키보드의 레이아웃 푸시 설정이 반영되지 않는다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KKusumi/items/92db9f711489ce4ea62d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)