2. android:windowSoftInputMode="adjustUnspecified|adjustPan" 추가
Reference https://musesong.tistory.com/entry/안드로이드-소프트키보드에-가려진-EditText-키보드-위로-올리기 키보드를 올렸을 때 안에 있는 레이아웃이 전체적으로 움직이거나 고정시키고 싶을 때가 있습니다. 이번 포스팅에서는 키보드의 영향에 따라 레이아웃을 조정하는 코드를 작성해보겠습니다. 우선 키보드 화면조정의 속성에는 다음과 같습니다.
위는 adjustPan을 적용한 것으로, 키보드가 올라갈 때 UI화면도 같이 올라가게 되는것을 확인할 수 있습니다. manifests.xml
위는 adjustResize로 키보드가 올라갈 때 액티비티는 고정되어있습니다. 하지만 너무 고정되어있는 탓에 입력할 수 있는 EditText가 보이지 않아 문제가 있습니다. manifest.xml
이 문제를 해결하기 위해서는 xml코드에서 레이아웃을 바꿔줘야합니다. 저는 최상위 레이아웃을 RelativeLayout로 만들어 준 뒤, EditText를 바닥에 붙여주니 다음과 같이 키보드 위에 EditText가 붙는 것을 확인할 수 있습니다. SampleCode RelativeLayout의 구성은 다은과 같습니다. activity_main.xml
EditText만 바닥에 붙여주기만 하면 키보드 위에 붙도록 구현할 수 있습니다. 카테고리 없음 2018. 1. 9. 21:08 카카오톡(KakaoTalk)에서 글을 쓰는 구간인 EditText에 Focus가 활성화되어있으면 이렇게 EditText레이아웃이 키보드 위로 올라오게 된다. 키보드가 올라오자 입력값을 전달할 레이아웃도 같이 올라온 모습이다. 위같은 방법을 사용하기위해서는 아래의 코드를 보아야 한다.
위의 코드에서 하나 특이한 점이 있다. 레이아웃 안에 오직 LinearLayout만 1의 weight값을 준것이다. 저렇게 하면 밑에있는 EditText를 눌러 포커스를 지정했을때 키보드 위로 EditText가 얹혀지게 된다. 하지만 어딘가 불안정하게 얹히는것을 볼 수 있는데, 이걸 해결하기위해 매니페스트(manifest)의 해당 액티비티에 코드 하나만 집어넣으면 된다.
해당 액티비티에 위의 17번 행처럼 android:windowSoftInputMode="adjustResize" 라는 코드를 넣어주면 옵션 이름처럼 키보드 레이아웃에 맞춰서 Resizing해준다. |