ソフトウェアキーボードを表示したい
ボタンを押すなどのイベント時にソフトウェアキーボードを表示させてユーザーに入力を促したい!!
今回はそんなイベント時にソフトウェアキーボードを表示させる方法について紹介。
以下のソースはボタンをタップしたらソフトウェアキーボードを表示させるというもの。
button.setOnClickListener { val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.showSoftInput(editText, 0) }
ただし!
表示したいActivityにEditableなViewを配置するのをお忘れなく。
上記の場合はshowIsogtInput()の引数であるeditTextを配置している。
ソフトウェアキーボードに入力された文字もそのままEditTextに反映される。
取得するにはTextWatcherのonTextChanged()などで自動で取得することができる。
参考:[Android] 入力を監視するTextWatcher|nyan のアプリ開発
popup window内で表示させる場合
popup window内で表示させるにはpopup windowにfocusしてあげる必要がある。
mPopupWindow.isFocusable = true mPopupWindow.update()
当然だが、popup windowレイアウト内にEditTextを配置するのをお忘れなく。
ViewにFocusが当たっているかどうか知りたい
EditTextにfocusが当たっているかどうか知るには下記のようにすればわかる。
editView.requestFocus()
返り値はboolean型。
Focusされているのにキーボードがでない
上記で紹介したfocus判定を確認するとtrueなのにキーボードがでないっていうこともあるかもしれない。
そんなときは親Viewのfocusを外してやると治るときがある。
mWearableRecyclerView.isFocusable = false mWearableRecyclerView.isFocusableInTouchMode = false
ScrollVIewやListVIew、RecyclerView等の中にあるVIewの子Viewのイベントをしようとしたときに起こる。
自分がテストしたRecyclerVIew内の場合、案の定キーボードはでなかった(2かいタップするといけた。)
#kotlin #SoftwearKeyboard #popupWindow #Focus