Entryで矢印キーを押すとタブが切り替わってしまう

Xamarin.FormsのAndroid版で発生。

タブで隣同士の画面

最高血圧の入力用Entryは、

Keyboard=”Numeric”にしてると

と、入力パットは数値用が出るんだが、GalaxyなのでキーボードをGalaxy日本語キーボードに変えると、

矢印キーが出現する。

テキストを入力中はテキスト位置を移動できるんだけど、行頭・行末ではTabbedPageに矢印キーが転送され?タブが変わってしまう。(´・ω・`)

そして次のタブの先頭のコントロールにフォーカスが当たり、次のタブの先頭コントロールがDatePickerのためカレンダーが出てしまうという。(||  ゚Д゚)ガーン!!

まるで数値入力用に表示されたみたいな。

そこで、行頭・行末にカーソルがあるときは、矢印キーをキャンセルするようにした。

もともと下線を消すRendererを作ってあったので、これにEditTextのイベントでキーを判定して無視するようにした。

キーコードは、Keycode.DpadLeftとKeycode.DpadRightらしいのでSelectionStartとSelectionEnd で判定した。

ネイティブ側の理解は大事だなぁ。

Tips出てきて良かった。ε-(´∀`*)ホッ

(参考サイト)

Detecting KeyDown in an entry?

TabLayout + ViewPager + EditTextでソフトウェアキーボードからのタブ切り替わりを防ぐ

%d人のブロガーが「いいね」をつけました。