2013-02-03 13 views
25

Người dùng phải nhập số điện thoại di động của mình, số điện thoại di động phải là 10 con số, tôi đã sử dụng TextWatcher để làm điều đó, như thế nàyandroid làm thế nào để thiết lập các EditText Cursor đến cuối văn bản của nó

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("*"); 
     } 
    } 
}); 

nhưng vấn đề là khi người dùng nhập số thứ 11, con trỏ của văn bản bắt đầu từ đầu văn bản, tôi muốn nó vẫn ở cuối, làm thế nào?

Trả lời

91

Bạn có hai lựa chọn, cả hai nên làm việc:

một)

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

b)

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

Trong khi anwser jenzz làm việc đối với trường hợp đơn giản nhất. Nó không nếu bạn di chuyển con trỏ trước khi chỉnh sửa văn bản của bạn bởi vì ngay sau khi chữ cái thứ hai được gõ nó sẽ được chuyển đến cuối EditText.

thích sử dụng giải pháp này:

  @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

những gì là f trong này không hiểu xin vui lòng giúp đỡ –

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); 

Nó làm việc tốt cho tôi!