5

私はこれをレイアウトxmlに持っています

android:digits="0123456789."
android:inputType="phone" />

私が望むのは、プログラムで変更できるようにし、前後に変更できるようにすることです。inputType 部分は問題ありません

manual_ip.setInputType(InputType.TYPE_CLASS_TEXT);

また

manual_ip.setInputType(InputType.TYPE_CLASS_PHONE);

しかし、私は数字の部分に無知です..文字を「0123456789」に制限する必要があります。または、チェックボックスの状態に応じてすべてを許可します。

4

3 に答える 3

9

追加する

manual_ip.setKeyListener(DigitsKeyListener.getInstance("0123456789."));

manual_ip.setInputType(InputType.TYPE_CLASS_PHONE);

その後は何もない

manual_ip.setInputType(InputType.TYPE_CLASS_TEXT);

私の問題を解決します!

于 2012-10-13T09:13:01.040 に答える
2

InputFilterを次のように使用してみてください。

    InputFilter[] digitsfilters = new InputFilter[1];
    digitsfilters[0] = new InputFilter(){

    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        // TODO Auto-generated method stub
        if (end > start) {

            char[] acceptedChars = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

            for (int index = start; index < end; index++) {
                if (!new String(acceptedChars).contains(String.valueOf(source.charAt(index)))) {
                return "";
                }
            }
        }
                return null;
    }
};
manual_ip= (EditText)findViewById(R.id.manual_ip);
manual_ip.setFilters(digitsfilters);
于 2012-10-13T09:56:06.903 に答える
0

これを書き留めてください。

myEditText.setFilters( new InputFilter[] {
    new PasswordCharFilter(), new InputFilter.LengthFilter(20)});

また

TextView editEntryVew = new TextView(...);
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(8);
editEntryView.setFilters(FilterArray);
于 2012-10-13T09:17:10.487 に答える