Edittext Числовой по коду - PullRequest
       21

Edittext Числовой по коду

0 голосов
/ 20 января 2012

Привет, ребята.

Я пытаюсь установить EditText для ввода только цифр и точки ("."), Вот и все. Я уже использую inputType .. но есть цифровая клавиатура с "+", "-" и "#" и без точки / точки (".") пример для чего это нужно: 100.99 .. вот и все. Я нашел какой-то код:

<EditText android:text="100.99"
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numeric="integer|decimal" />

но это в xml ... я хочу создать его по коду. Также я имею в виду эту строку:

 android:numeric="integer|decimal"

Пожалуйста, если кто-нибудь знает, как установить эти настройки по коду .. ответьте мне

С уважением, Питер.

Ответы [ 3 ]

4 голосов
/ 20 января 2012

Попробуйте использовать:

mEditText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

Редактировать:

Предложение, которое я дал выше, было взято из Док. но, как вы сказали, он не работает должным образом, я могу предложить вам кое-что еще.

Добавьте TextWatcher к вашему EditText, как показано ниже, после того, как вы установили тип ввода выше:

mEditText.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3){         

          if(arg0.length()!=0)
          {
                String s=arg0.toString();
                Character c=s.charAt(arg0.length()-1);

                if(c=='/' || c=='\\' || c=='|' || c=='"' || c==':' || c==';' || c=='?' || c=='/' || c==',' || c=='<' || c=='>' || c=='!' || c=='@' || c=='#' || c=='$' || c=='%' || c=='^' || c=='&' || c=='*' || c=='(' || c==')' || c=='_' || c=='=' || c=='+' || c=='-')
                {               
                    if(arg0.length()!=1)
                    {
                        String s1=s.substring(0,arg0.length()-1);
                        mEditText.setText(s1);
                        mEditText.setSelection(s1.length());    
                    }
                    else
                    {
                        mEditText.setText("");
                    }
                }
          }     
    }               
    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {
    }               
    @Override
    public void afterTextChanged(Editable arg0) {
    }
}
0 голосов
/ 09 января 2014

на самом деле это работает:

editText.setInputType((InputType.TYPE_MASK_CLASS&InputType.TYPE_CLASS_NUMBER)| (InputType.TYPE_MASK_FLAGS & (InputType.TYPE_NUMBER_FLAG_SIGNED |InputType.TYPE_NUMBER_FLAG_DECIMAL))); 
0 голосов
/ 20 января 2012

Пожалуйста, попробуйте это,

// TYPE_CLASS_NUMBER: класс для числового текста. Отображает цифры / символы клавиатуры.

editText.setInputType(InputType.TYPE_CLASS_NUMBER);

// TYPE_CLASS_PHONE: класс для номера телефона. Отображается клавиатура телефонного номера.

editText.setInputType(InputType.TYPE_CLASS_PHONE);
...