Android開発

【Android開発】イベント時にソフトウェアキーボードを表示したい

ソフトウェアキーボードを表示したい

ボタンを押すなどのイベント時にソフトウェアキーボードを表示させてユーザーに入力を促したい!!

今回はそんなイベント時にソフトウェアキーボードを表示させる方法について紹介。

以下のソースはボタンをタップしたらソフトウェアキーボードを表示させるというもの。

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

-Android開発

© 2020 ガジェジー