WebViewのフォーム入力でImmersiveモードを維持する(Kotlin編)


Androidアプリ開発でKotlinに移行してから以前出会した問題が再度形を変えて現れてきたので紹介したいと思います。

Enabling Immersive Mode from JavaScript Event on WebView

と言ってもそんな大袈裟なものでなく、正確には Unresolved Reference エラーの解消ということになるのですが、単に文法をよく知らなかったのとAndroid Studioの変換と予測機能が追いついてこなかっただけで、MainActivityクラスの中にWebViewJavaScriptInterfaceのようなクラスを書いてスコープ外にあるものを呼び出したい時はinnerを付けましょうというお粗末な話でした。

In Kotlin, why can’t I access the outer class on an instance of an inner class? – Stack Overflow

理想的なのは、OS側でソフトウェアキーボードを表示する時にフルスクリーンを解除しないようにするか、入力が終了してキーボードが引っ込んだら判定できるようであればわざわざブリッジする必要がないのですが、どちらも古から見込みがないので仕方ありません。

How do I detect if software keyboard is visible on Android Device or not? – Stack Overflow

恥ずかしながらKotlinになってもう遅延処理は不要なんじゃないのかなあと思ったのも事実だったのですが、

未だおぐぐり検索結果の一等地に自分の過去投稿が出てきて解決に進まない時のもどかしさというのも経験しました笑