ボックスの場合EditText
、ユーザーは有効な数字のみを入力する必要があるため、 を使用してandroid:inputType="numberDecimal"
います。残念ながら、Android が提供するソフト キーボードには、一番上の行にのみ数字があり、次の 3 行には他のさまざまな記号 (ドル記号、パーセント記号、感嘆符、スペースなど) があります。はnumberDecimal
0 ~ 9 の数字、マイナス記号、および小数点のみを受け入れるため、「電話」ソフト キーボード (3x3 グリッドの 0 ~ 9 とその他の記号) を使用する方が理にかなっています。これにより、ボタンが大きくなり、ヒットしやすくなります (同じ画面領域で 10x4 グリッドではなく 4x4 グリッドであるため)。残念ながら、使用android:inputType="phone"
すると括弧などの数字以外の文字が許可されます
を使ってみたのですが、ビットフラグandroid:inputType="numberDecimal|phone"
の側面が無視されているようです。と組み合わせてnumberDecimal
使用することも試しましたが、それでも複数の負号または小数点を使用できます (そのようなエラー チェックは非常に優れており、ユーザーが入力することさえできません)。Javaコードでa を使用しながら、xmlレイアウトファイルでも使用しようとしましたが、デフォルトの数字ソフトキーボード(一番上の行にのみ数字があるもの)を使用します( set のように見え、セットを無効にしますxml レイアウトによる)。android:inputType="phone"
android:digits="0123456789-."
inputType="number"
android:inputType="phone"
DigitsKeyListener
InputType.TYPE_CLASS_NUMBER
InputType.TYPE_CLASS_PHONE
カスタム IME を作成しても機能しません。ユーザーはアプリの外部でグローバル オプションとして IME を選択する必要があるからです。
「電話」スタイルのソフトキーボードを使用しながら、入力内容に「番号」制限を使用する方法はありますか?