Tar*_*run 4 android ime android-softkeyboard android-edittext
我有一个要求,我有一个MainActivity.从这个活动我实例化4个片段(让我们说FragmentA,FragmentB,FragmentC,FragmentD.
这四个片段中的一个; 在3个碎片上(我们说FragmentA,FragmentB,FragmentC),我想设置MainActivity的windowsoftinputmode(),SOFT_INPUT_ADJUST_PAN以便窗口可以调整大小.
在一个Fragment()上让我们说FragmentD),我想将MainActivity的windowsoftinputmode()设置为SOFT_INPUT_ADJUST_NOTHING.
所以我所做的是,在每个Fragment的onViewCreated()方法上,我使用更改LayoutParams标志执行以下代码行:
((MainActivity)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
Run Code Online (Sandbox Code Playgroud)
要么
((MainActivity)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Run Code Online (Sandbox Code Playgroud)
问题是它无法工作,我无法正确设置软件输入,我无法阻止窗口调整大小.
当我在MainActivity的onCreate()中执行它们时,相同的代码行完美地工作,如下所示:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Run Code Online (Sandbox Code Playgroud)
但是为所有四个片段设置了值.清单中的MainActivity声明是:
<activity
android:name="com.test.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"/>
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我做错了吗?我希望不同的碎片有不同的行为.
bat*_*eva 12
试试这个我发现:
旨在为标签使用两种不同的模式.模式是SOFT_INPUT_ADJUST_RESIZE和SOFT_INPUT_ADJUST_NOTHING.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Run Code Online (Sandbox Code Playgroud)
上面的代码行本身不起作用.应用程序始终处于ADJUST_NOTHING状态.但是,如果将windowSoftInputMode ="adjustResize"插入到AndroidManifest.xml文件中的标记中,则应用程序窗口将调整为默认值.此外,当您在片段中调用以下行时
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
Run Code Online (Sandbox Code Playgroud)
它将按预期运行,没有任何重新调整大小.我的工作!
为iBEK 的评论添加实现。windowsSoftInputMode 需要做两件事才能正常工作:
首先是添加以下标志:
windowSoftInputMode="adjustResize"
Run Code Online (Sandbox Code Playgroud)
在 AndroidManifest.xml 文件中,如下所示:
<activity
android:name="com.test.TestActivity"
android:windowSoftInputMode="adjustResize"/>
Run Code Online (Sandbox Code Playgroud)
指定此标志对于 windowsSoftInputMode 工作是必需的。
其次在您的活动的 onCreate 中添加以下内容,在本例中为 TestActivity :
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams. SOFT_INPUT_ADJUST_RESIZE);
Run Code Online (Sandbox Code Playgroud)
现在它应该适用于活动托管的所有片段..我希望这能回答你的问题@iBEK。
| 归档时间: |
|
| 查看次数: |
5253 次 |
| 最近记录: |