개발 - 안드로이드

안드로이드 Fragment에서 windowSoftInputMode 바꾸는 방법

개미v 2024. 6. 18. 21:04
반응형

안드로이드 특정 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);
}

 

 

 

 

 

반응형