하나의 MainActivity가있는 요구 사항이 있습니다. 이 액티비티에서는 4 개의 프래그먼트를 인스턴스화합니다 (FragmentA, FragmentB, FragmentC라고합시다)Fragments에서 windowsoftinputmode를 프로그래밍 방식으로 설정하는 방법은 무엇입니까?
3 개의 프래그먼트 (FragmentA, FragmentB, FragmentC라고합시다)에서 MainActivity의 windowsoftinputmode 나는 SOFT_INPUT_ADJUST_NOTHING
에 MainActivity의 windowsoftinputmode()을 설정할)) SOFT_INPUT_ADJUST_PAN
에 그래서 창.
의 크기를 조정할 수 있습니다 그리고 한 조각에() 우리가 FragmentD를 가정 해 봅시다.
((MainActivity)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
또는
((MainActivity)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
문제는 그것이 작동하지 않는 것입니다 :
그래서, 각 조각의 onViewCreated에() 메소드는 내가 변화의 LayoutParams 플래그 다음 코드 줄을 실행됩니다 내가 뭘 그리고 setSoftInputMode를 올바르게 할 수 없기 때문에 창 크기가 조절되는 것을 막을 수 없습니다.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
그러나 값보다
이 네 조각 설정됩니다 : 같이 내가 MainActivity의에서 onCreate()에서 그들을 실행할 때 코드의같은 라인이 완벽하게 작동합니다. 매니페스트 내 MainActivity 선언은 다음과 같습니다
<activity
android:name="com.test.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"/>
누군가가 내가이 잘못 뭐하는 거지 도움이 될 수 있습니다. 서로 다른 단편에 대해 다른 행동을하고 싶습니다.
이걸 시도 했습니까? 그것은 도움이 되었습니까? – batsheva
예, thing은 windowsSoftInputMode를 지정하지 않고 WindowsSoftInputMode를 Fragment에서 변경하기 위해 먼저 매니페스트에서 선언해야하고 Fragment에서 프로그래밍 방식으로 변경해야합니다. – Tarun
@Terri 작동하는 코드를 공유 할 수 있습니까? 현재이 문제를 겪고 있으며 아무 것도 작동하지 않습니다. – iBEK