2012-03-13 50 views
5

Tôi đang làm việc trên bàn phím mềm Android và đang băn khoăn liệu có cách nào để bàn phím có được vị trí con trỏ hiện tại không? Tôi hiện đang sử dụng đoạn mã sau:Nhận Bàn phím Vị trí Con trỏ Bàn phím Android

connection.getTextBeforeCursor(Integer.MAX_VALUE, 0).length() 

Tuy nhiên, điều này rất chậm (ngay cả đối với một lượng nhỏ văn bản, nó có thể mất đến 50ms - chạy trên một Galaxy Nexus, vì vậy đây có thể sẽ là thậm chí chậm hơn cho điện thoại cấp thấp hơn). Tôi cũng đã thử nghiệm nó trên một Droid Incredible, và độ trễ thậm chí còn nghiêm trọng hơn.

Trong hàm onUpdateSelection, bạn được cung cấp vị trí con trỏ mới. Tuy nhiên, hàm này không phải lúc nào cũng được gọi và do đó lưu trữ giá trị do nó cung cấp để sử dụng trong tương lai không đáng tin cậy.

Vì bạn có thể đặt vị trí con trỏ và nhận văn bản đã chọn (nhưng không phải vị trí của văn bản đã chọn), không nên có chức năng để lấy vị trí con trỏ?

Cảm ơn sự giúp đỡ!

Trả lời

4

Đây là câu hỏi cũ, nhưng gần đây tôi đã gặp phải sự cố tương tự. Để có được vị trí con trỏ:

InputConnection ic = getCurrentInputConnection(); 
ExtractedText et = ic.getExtractedText(new ExtractedTextRequest(), 0); 
int selectionStart = et.selectionStart; 
int selectionEnd = et.selectionEnd; 
+0

Dường như nó đang hoạt động trên văn bản đã chọn. Các câu hỏi dường như chỉ là một con trỏ bình thường trong văn bản mà không có lựa chọn. Mã này có hoạt động trong trường hợp này không? –

+0

Có, trong trường hợp đó, selectionStart và selectionEnd bằng nhau. –

Các vấn đề liên quan