2013-02-20 2 views
0

Так что я пытаюсь сделать текст пользователя вставляемым в какой-то формат, который должен быть xx.xxxx. Для этого я использую класс textwatcher. Вот мой класс:Как управлять текстом в edittext с textwatcher

edittext.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      EditText edittext = (EditText) findViewById(R.id.my_edit); 
      if(edittext.getText().length()==2)edittext.setText(edittext.getText().toString()+"."); 

     } 
    }); 

Так что я просто просто добавляю '.' если длина после редактирования равна 2. Но после этого я установил свой курсор для начала текстового поля, и когда я попытаюсь удалить точку, просто заново создайте его, потому что длина снова 2. Я знаю, что есть какое-то решение, но кажется, что я могу «т понять это сегодня: S

ответ

0

вам нужно будет использовать EditText.append вместо EditText.setText и переместить курсор на EditText как:

Override 
    public void afterTextChanged(Editable s) { 

     if(edittext.getText().length()==2){ 

      // append dot to edittext 
      edittext.append("."); 
      // move cursor at end position in EditText 
      edittext.setSelection(edittext.getText().length()); 
      } 
    } 
+0

Когда я делаю это, в или выше 4,0 в, то курсор пребывание перед "" , а в 2.2v отлично работает, но в обоих случаях я не могу удалить символы –

Смежные вопросы