【问题标题】:Keyboard hides on orientation change键盘在方向更改时隐藏
【发布时间】:2017-11-04 03:21:57
【问题描述】:

类似的问题已经出现过好几次了,但我发现了奇怪的规律,我认为不应该出现。

在其布局中有ActivityEditText。当用户单击该字段时,会出现软输入。将标志 android:windowSoftInputMode="stateUnchanged" 添加到 AndroidManifest 后,设备方向更改时一切正常 - 键盘保持其状态。但是当Fragment 位于Activity 之上并且EditText 位于Fragment 中时,它不起作用。我假设在这种情况下会跳过AndroidManifest 上的标志(标志仅涵盖Activity),并且在方向更改期间键盘会消失。

我没有找到在方向更改时保留键盘状态的干净解决方案。我在onActivityCreated() 上看到了手动显示键盘的解决方案,但我不喜欢它,因为它需要在对象中的某些变量上保持键盘可见性状态,而这些变量在方向变化后仍然存在。 我发现如果Activity中有EditText,即使用户没有触摸它,并且它没有聚焦,键盘仍然保持它的状态,这是完全出乎意料的。

我无法删除 Fragment 并仅依赖 Activity,因为在 ViewPager 中使用了 Fragments。但是我已经检查过,当Fragment 直接附加到Activity 时也会发生这种情况。

我还发现我检查过的所有应用程序都以某种方式解决了这个问题。

是否有一个干净的解决方案可以在片段的方向更改时保留键盘状态?

编辑:我也不喜欢android:configChanges="orientation|screenSize" 选项。

【问题讨论】:

    标签: android android-fragments keyboard android-orientation window-soft-input-mode


    【解决方案1】:

    尝试将此行添加到清单中的活动

    android:configChanges="orientation"

    它并不完美,但你可以尝试一下

    【讨论】:

    • 我忘了说我一开始就拒绝了这个想法:stackoverflow.com/a/7990543/1888738。此外,android:configChanges 仅适用于后 Honeycomb 设备上的“orientation|screenSize”标志。
    猜你喜欢
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多