我有一個需求,我有一個MainActivity。從這個活動我實例化4片段(讓我們說,片段A,片段B,片段C,片段D)如何以編程方式從片段設置windowsoftinputmode?
在這四個片段;在3片段(讓我們說FragmentA,FragmentB,FragmentC),我想設置MainActivity的windowsoftinputmode )到SOFT_INPUT_ADJUST_PAN
以便窗口可以調整大小
並且在一個片段()上讓我們說FragmentD),我想將MainActivity的windowsoftinputmode()設置爲SOFT_INPUT_ADJUST_NOTHING
。
所以我要做的就是,每個片段的onViewCreated()方法,我執行下面的代碼行不斷變化的LayoutParams標誌:
((MainActivity)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
或
((MainActivity)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
問題是,它不工作並且我無法正確設置SoftInputMode,並且無法防止調整窗口大小。的代碼
同樣的思路完美地工作,當我在MainActivity的的onCreate()執行它們,如下所示:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
但比的值被設置爲所有四個片段。清單中的MainActivity聲明是:
<activity
android:name="com.test.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"/>
有人可以幫助我在這做錯了什麼。我想對不同的片段有不同的行爲。
你嘗試過嗎?它有幫助嗎? – batsheva
是的,事情是,我沒有指定windowsSoftInputMode,並從片段更改windowsSoftInputMode,它需要首先在清單中聲明,並從編程方式從片段更改。 – Tarun
@Terri你能分享一下你的代碼嗎?我目前正在解決這個問題,似乎沒有任何工作。 – iBEK