2010-08-10 108 views
10

Giả sử rằng người dùng đã viết một số văn bản vào EditText và sau đó chạm vào vị trí khác trên màn hình, khiến vị trí con trỏ thay đổi: Làm cách nào để xác định vị trí con trỏ mới?Vị trí con trỏ của EditText

Trả lời

24

Phiên bản đơn giản:

myEditText.getSelectionStart(); 

Nếu bạn muốn phản ứng trên một sự kiện bạn có thể thử

myEditText.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     // view is myEditText here 
    } 
}); 

event phép để phân biệt giữa máy ép và phát hành.

EditText cũng có setOnClickListener() có thể đáng xem.

EDIT: Tôi quên đề cập đến onSelectionChanged(int selStart, int selEnd) trong đó selEnd bằng selStart nếu vị trí thay đổi.

+2

Để làm rõ: onSelectionChanged() phải được ghi đè trong các lớp con EditText để có ích. Sự kiện OnTouch chỉ xảy ra khi người dùng thực sự chạm vào màn hình. Các sự kiện OnClick có thể được kích hoạt khi người dùng chạm vào màn hình hoặc thông qua các đầu vào vật lý nhất định, ví dụ: Trung tâm D-pad, nhấp chuột theo dõi, v.v. – greg7gkb

2

Cách tốt nhất và an toàn được sử dụng TextWatcher

 @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
       int cursorIndex = start + 1; 
     } 
Các vấn đề liên quan