LoginSignup
2

posted at

updated at

AndroidのWebViewで、画面回転した後にフォーカスを当ててもソフトウェアキーボードが表示されない不具合に対する回避策

要件

Androidで以下のような要件がありました。

  • WebView画面
  • 縦画面でコメントが入力できる
  • WebChromeClientから受け取ったView(動画)を全画面(横画面)で表示する

不具合

この時特定の端末で
「画面回転をした後に、WebView内の入力欄にフォーカスを当てても、ソフトウェアキーボードが表示されない」
という症状がありました。

再現手順

  • 該当の画面に遷移する
  • WebView内の動画を最大化して、横画面で表示する
  • 縦画面に戻す
  • WebView内のテキスト入力欄にフォーカスしても、ソフトウェアキーボードが表示されない

修正方法

回避策として、以下の実装を行いました。

kotlin WebViewActivity.kt
override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    webView.clearFocus()
    webView.requestFocus(View.FOCUS_DOWN)
}

一度WebView内のフォーカスをクリアしてから、再度WebViewにフォーカスを当てます。
そうすると、テキスト入力欄を選択した(フォーカスが当たった)ときに、ソフトウェアキーボードが表示されるようになります。

終わりに

あまりこういった要件のケースは無いと思うのですが、意外と解決に時間がかかってしまったので、
こちらを共有したいと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2