3

数値モードで Javascript を使用して Android ソフトキーボードを開くことができるようにしたいと考えています。

ソフトキーボードを開く方法とそのデータ型を数値に設定する方法についての投稿が多数ありますが、私の場合、これらのソリューションを組み合わせることができない状況がいくつかあります。

現在、ユーザーが手動で入力フィールドをタップすると、数字のソフト キーボードが正しく表示されます。また、Java メソッド .addJavascriptInterface() を使用して、キーボードを開閉する Javascript 関数を作成する方法も理解しました。それは主にこのコードにあります:

public class KeyBoard {
        private WebView mAppView;
        private DroidGap mGap;

        public KeyBoard(DroidGap gap, WebView view)
        {
            mAppView = view;
            mGap = gap;
        }

        public void showKeyBoard() {
            InputMethodManager mgr = (InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE);
            // only will trigger it if no physical keyboard is open
            mgr.showSoftInput(mAppView, InputMethodManager.SHOW_IMPLICIT);

            ((InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(mAppView, 0); 
        }

        public void hideKeyBoard() {
            InputMethodManager mgr = (InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE);
            mgr.hideSoftInputFromWindow(mAppView.getWindowToken(), 0);
        }
}

問題は、このカスタム Javascript-to-Java コマンドを使用すると、フィールドの現在の値がすでに数値であり、type=number タグがある場合でも、キーボードが常に Qwerty として表示されることです。

私はこれらを試しました: - 入力要素に type=number 属性を設定します。- 常に数値の準備ができている (ソフト キーボードを呼び出す前に値をゼロに設定する) - ソフト キーボードを呼び出す前に、入力にフォーカスを設定する (そしてその値を選択する) - TextView/EditText のプロパティの設定に関するソリューションを読みましたが、私のアプリはブラウザ アプリです。操作できる唯一の Android オブジェクトは WebView です。- 現在、Java WebView でデフォルトの入力方法を設定することは、Android ではできません。

Javascript-to-Java を使用してソフト キーボードを開く際の問題は、それが「一般的な」コマンドであることです。つまり、特に入力に結び付けられていません。そのため、ソフト キーボードは、キーストロークが送信される要素に関係なく、デフォルト モードで開かれます。

4

0 に答える 0