2017-04-04 6 views
0

私はXamarinフォームプロジェクトを作成しています。Android:Xamarin.Formsにカスタムキーボードを追加

私たちは12キーキーボードを持つKitKatを実行しているAndroidデバイスをテストしています。

FocusChangeイベントおよびClickedイベントをオーバーライドするカスタムレンダラーを作成したエントリにフォーカスが与えられたときに、ソフト入力キーボードを強制的に表示しようとしています。

デバイスが物理的なキーボードを持っていて、entryKeyboardが数字であるかどうかを検出するので、ちょっとしたことです。これらの両方の条件に該当する場合、私は

 Control.ShowSoftInputOnFocus = false; 

  imm.HideSoftInputFromWindow(Control.WindowToken, HideSoftInputFlags.None); 

を呼び出すことは、ほとんどのエントリエディタを含むビューを開いた場合を除き、動作します。キーボードがしばらく表示されて消えます。それは2つの面での問題です。キーボードが測定されている最中にビューの一番下にあるボタンを上に移動するので、キーボードが最終的に消えるとボタンが表示され、上に移動してから下に戻ります。第二に、しばらくしてはうまくいかない。私たちはいくつかの遅れを取ってきましたが、キーボードは画面上でより長く終わるので、問題は複雑になります。完璧な世界では

、私は

代わりに、私は特にそれを求める場合を除き、私はちょうどsoftInputはどこにでもこのビューに表示したくない、遅延を気にしない、私は気にしないだろう私の目に見えないキーボードを書いて、非同期プロセスが実行されている間に(不可視に)表示しなければなりません。

私はしばらくどこでも検索していますので、どんな助けでも大歓迎です。

事前のおかげで素敵な一日

答えて

1

を持っている私はあなたのEditText年代のカスタムレンダラを作成する必要があると思います。さらに、OnCheckIsTextEditorメソッドをオーバーライドするEditTextの独自の実装を作成します。これは単にfalseを返します。

Android API 21以降をターゲットにしている場合は、EditTextのすべてのインスタンスでShowSoftInputOnFocus = falseを呼び出すこともできます。これはおそらくXamarin.FormsのEffectで行うことができます。

+0

おそらく、問題を解決するための私の能力を制限する操作の順序を理解していると思います。現時点では、機能に関する私の仕事はそのまま受け入れられますが、私は本当に特定のビューの仮想キーボードのポップを無効にしたいと思います – SerenityNow

関連する問題