我有一个需求,我有一个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