26

ボックスの場合EditText、ユーザーは有効な数字のみを入力する必要があるため、 を使用してandroid:inputType="numberDecimal"います。残念ながら、Android が提供するソフト キーボードには、一番上の行にのみ数字があり、次の 3 行には他のさまざまな記号 (ドル記号、パーセント記号、感嘆符、スペースなど) があります。はnumberDecimal0 ~ 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"DigitsKeyListenerInputType.TYPE_CLASS_NUMBERInputType.TYPE_CLASS_PHONE

カスタム IME を作成しても機能しません。ユーザーはアプリの外部でグローバル オプションとして IME を選択する必要があるからです。

「電話」スタイルのソフトキーボードを使用しながら、入力内容に「番号」制限を使用する方法はありますか?

4

6 に答える 6

29

私も同じ問題を抱えていました。これは私のために働く:

<item name="android:inputType">numberDecimal</item>
<item name="android:digits">0123456789.</item>

うまくいけば、これはあなたを助けます。

于 2011-11-29T04:11:17.153 に答える
10

これまでのところ、DigitsKeyListener を拡張し、getInputType() をオーバーライドして、InputType.TYPE_CLASS_PHONE を返すようにすることにしました。これにより、DigitsKeyListener で便利な filter() を使用できるようになりますが、同時に TYPE_CLASS_PHONE ソフト キーボードも使用できます。私は Android プログラミングは初めてですが、これは何も壊すことなく動作するようです。コードは次のようなものです。

import android.text.method.DigitsKeyListener;
import android.text.InputType;
public class CustomDigitsKeyListener extends DigitsKeyListener
{
    public CustomDigitsKeyListener() {
        super(false, false);
    }

    public CustomDigitsKeyListener(boolean sign, boolean decimal) {
        super(sign, decimal);
    }

    public int getInputType() {
        return InputType.TYPE_CLASS_PHONE;
    }
}

これを行うことに何か問題がありますか (getInputType() の戻り値をスーパークラスが意図していないものに切り替える)?

于 2010-05-14T20:47:37.917 に答える
0

電話のキーボードを使用して、自分で入力を確認するだけです。入力が 0 ~ 9 の有効な数字であるかどうかをテストするのは、それほど大きな条件ではありません。

于 2010-05-14T07:19:06.850 に答える
0

android:numeric="integer"EditText ビューで使用してみてください。

于 2010-06-23T20:20:18.380 に答える