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