如何在屏幕旋转时更改键盘 IMEaction

How to change keyboard IMEaction on screen rotation

我需要在屏幕旋转时更改键盘输入法。 如果设备处于横向状态,我需要将操作设置为 IME_ACTION_NEXT,如果设备旋转 - 当键盘出现时 - 我需要更改操作以接受 returns.

我尝试创建另一个版本的视图作为横向视图,但这并没有改变键盘。 我也曾尝试更改 "onConfigurationChanged" 中的输入法操作,但在那种情况下也没有对键盘进行任何更改。

有没有强制键盘在旋转时刷新?

OnConfigurationChanged 只有在您通过清单中的 android:configChanges="orientation|screenSize" 告诉它时才会调用。你有那一套吗?否则你的 Activity 不会在方向上被调用,它实际上被杀死并重新启动。

另一种方法是对横向和纵向使用单独的布局。他们可以指定不同的设置,但是你必须维护 2 个文件。

一种可能是将您的单一布局中的值设置为@string/keyboardAction,并在您的strings.xml 文件中定义它,然后创建横向strings.xml 文件来覆盖它。那应该可以,但是我从来没有真正尝试过使用 imeOptions 字符串来做到这一点,所以我不能完全保证。但如果可行的话,这将是两种方式中最干净的一种。

编辑:

再读一遍-这是键盘已经存在的时候,如果旋转后打开它就可以了吗?这实际上是有道理的——现在我们正在深入研究键盘 API。实际导致键盘重新加载该字段的原因因键盘而异,因此很难给出确切的答案。如果在旋转时使用新会话(第二个参数 true)调用 onStartInputView,则肯定会发生这种情况。如果它以 false 调用,它可能会或可能不会重置标签,但它应该。我不相信它会要求轮换。

无论如何,请尝试轮流调用 inputMethodManager.restartInput。这是当您更改 inputType 时 EditText 调用的函数,键盘应用程序 应该 然后重新初始化视图。