반응형
안드로이드 특정 fragment 화면에서 windowSoftInputMode를 변경하려고 했지만 적용이 안됩니다.
MainActivity에서 적용하려고 했는데, 그렇게 하면 전체 Fragment에 영향이 있습니다.
아래는 특정 Fragment에서만 windowSoftInputMode="adjustNothing" 로 변경하는 예제 입니다.
1. AndroidManifest.xml
AndroidManifest에서 MainActiviy에 관해서 windowSoftInputMode 기본값으로 아무거나(저는 adjustNothing) 설정해야 합니다.
설정 안하면 기본값으로 nothing 똑같을 것 같은데, 안하면 아래 JAVA 코드가 안 먹힙니다.
이유는 모르겠음
<activity
android:name=".main.MainActivity"
android:windowSoftInputMode="adjustNothing" />
2. Fragment.java
특정 Fragment가 생성될 때 windowSoftInputMode 속성 변경하고, Fragment가 사라질 때 원복 합니다.
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// 액티비티의 윈도우 속성을 변경
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
@Override
public void onDestroyView() {
super.onDestroyView();
// 액티비티의 윈도우 속성을 원래대로 변경
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
}
반응형
'개발 - 안드로이드' 카테고리의 다른 글
구글 로그인 - 백엔드 스프링 프레임워크 (0) | 2024.06.20 |
---|---|
안드로이드 Debug, Release SHA-1 해시값 구하는 방법 (0) | 2024.06.18 |
안드로이드 fragment에서 editText.requestFocus() 안되는 경우 (0) | 2023.10.11 |
안드로이드 listView notifyDataSetChanged 0 → 1 신규 추가시는 동작 안함 해결 (0) | 2023.10.08 |
안드로이드 ListView 멀티 아이템 (0) | 2023.10.03 |