要件
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にフォーカスを当てます。
そうすると、テキスト入力欄を選択した(フォーカスが当たった)ときに、ソフトウェアキーボードが表示されるようになります。
終わりに
あまりこういった要件のケースは無いと思うのですが、意外と解決に時間がかかってしまったので、
こちらを共有したいと思います。