2013-02-03 13 views
25

użytkownik musi wprowadzić swój numer telefonu komórkowego, numer telefonu komórkowego musi być 10 numerów, użyłem TextWatcher to zrobić, jak toandroid jak ustawić EditText kursor na koniec swojego tekstu

et_mobile.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, 
      int count) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     // TODO Auto-generated method stub 
     if (et_mobile.getText().toString().length() > 10) { 
      et_mobile.setText(et_mobile.getText().toString() 
        .subSequence(0, 10)); 
      tv_mobileError.setText("Just 10 Number"); 
     }else{ 
      tv_mobileError.setText("*"); 
     } 
    } 
}); 

ale problem polega na tym, że użytkownik wprowadza 11-ty numer, kursor editekstu zaczyna się od początku tekstu, chcę go jeszcze na końcu, jak?

Odpowiedz

91

Masz dwie opcje, obie strony powinny działać:

)

editText.setText("Your text"); 
editText.setSelection(editText.getText().length()); 

b)

editText.setText("");  
editText.append("Your text"); 
0

Podczas jenzz anwser pracuje w najprostszym przypadku. Nie jest tak, jeśli przesuwasz kursor przed edytowaniem tekstu, ponieważ zaraz po wpisaniu drugiej litery zostanie ona przesunięta na koniec EditText.

Wolę korzystania z tego rozwiązania:

  @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) 
      { 
       ... 
       int position = et_mobile.getSelectionStart(); 
       et_mobile.setText(f(s)); 
       et_mobile.setSelection(position); 
       ... 
      } 
+0

co jest w tym nierozpoznane proszę o pomoc –

3
/** 
* Set pointer to end of text in edittext when user clicks Next on KeyBoard. 
*/ 
View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View view, boolean b) { 
     if (b) { 
      ((EditText) view).setSelection(((EditText) view).getText().length()); 
     } 
    } 
}; 

mEditFirstName.setOnFocusChangeListener(onFocusChangeListener); 
mEditLastName.setOnFocusChangeListener(onFocusChangeListener); 

pracować dla mnie dobre!

Powiązane problemy