【问题标题】:How to change keyboard IMEaction on screen rotation如何在屏幕旋转时更改键盘 IMEaction
【发布时间】:2019-03-07 13:22:03
【问题描述】:

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

我尝试将视图的另一个版本创建为横向视图,但这不会改变键盘。 我也尝试在“onConfigurationChanged”中更改 ime 操作,但在这种情况下也没有对键盘进行任何更改。

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

【问题讨论】:

    标签: android keyboard rotation android-lifecycle onconfigurationchanged


    【解决方案1】:

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

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

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

    编辑:

    只是重读-这是键盘已经存在的情况,如果在旋转后打开它可以工作吗?这实际上是有道理的——现在我们正在深入研究键盘 API。实际导致键盘重新加载该字段的原因在键盘之间会有所不同,因此很难找到准确的答案。如果在轮换时使用新会话(第二个参数为 true)调用 onStartInputView,肯定会发生这种情况。如果它以 false 调用,它可能会或可能不会重置标签,但它应该。我不相信它是轮流调用的。

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

    【讨论】:

    • 嗨,gabe - 感谢您的回复。我忘了提到我尝试使用文件的横向版本,但旋转后键盘没有更改 - 我只是将它添加到我的帖子中。 onConfigurationChanged 被调用,我确定
    • @OneBigQuestion 查看我的编辑,我意识到我在初次阅读时错过了您问题中的数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 2016-01-28
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多