Wook No.1
안드로이드 풀스크린에서 키보드 겹치는 이슈 본문
EditText 영역을 클릭 하면 해당 영역을 가리는 이슈가 있다.
대부분 AndroidManifest에 windowSoftInputMode 옵션 adjustResize 혹은 adjustPan으로 해결이 되지만 이걸로도 해결 안되는 경우가 생긴다. 이유가 뭔지;;;;
아래 이슈에 대한 해결방법이다.
public class AndroidBug5497Workaround {
// For more information, see https://issuetracker.google.com/issues/36911528
// To use this class, simply invoke assistActivity() on an Activity that already has its content view set.
public static void assistActivity (Activity activity) {
new AndroidBug5497Workaround(activity);
}
private View mChildOfContent;
private int usableHeightPrevious;
private FrameLayout.LayoutParams frameLayoutParams;
private AndroidBug5497Workaround(Activity activity) {
FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
mChildOfContent = content.getChildAt(0);
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
}
});
frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
}
private void possiblyResizeChildOfContent() {
int usableHeightNow = computeUsableHeight();
if (usableHeightNow != usableHeightPrevious) {
int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
int heightDifference = usableHeightSansKeyboard - usableHeightNow;
if (heightDifference > (usableHeightSansKeyboard/4)) {
// keyboard probably just became visible
frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
} else {
// keyboard probably just became hidden
frameLayoutParams.height = usableHeightSansKeyboard;
}
mChildOfContent.requestLayout();
usableHeightPrevious = usableHeightNow;
}
}
private int computeUsableHeight() {
Rect r = new Rect();
mChildOfContent.getWindowVisibleDisplayFrame(r);
return (r.bottom - r.top);
}
}
해당 Activity onCreate에서 아래와 같이 호출 하면 된다.
AndroidBug5497Workaround.assistActivity(this);
키보드를 찾아서 사이즈를 확인하고 해당 높이 만큼 View를 보여주는 코드 이다.
StackOverFlow 킹왕짱!!!!
'Android' 카테고리의 다른 글
Storage Image 저장 (0) | 2021.10.07 |
---|---|
안드로이드 App Bundle 빌드(.aab) 파일명 변경 (0) | 2021.08.24 |
기존 XML Layout을 data binding Layout으로 Convert (0) | 2021.06.28 |
SMS Retriever API로 인증 문자 확인 (0) | 2021.06.21 |
SNS 로그인(애플) #3 (0) | 2021.06.21 |
Comments