2012-05-18 19 views
9

Tôi đang sử dụng giao diện android.text.TextWatcher để nghe các thay đổi trên EditText ở một trong các ứng dụng của tôi. Tôi theo dõi các thay đổi để cho phép các tùy chọn Hoàn tác, sử dụng beforeTextChanged() và onTextChanged().Đề xuất chính tả cung cấp các giá trị dư thừa với android.text.TextWatcher

Thông thường, những thay đổi xảy ra một ký tự cùng một lúc, ví dụ nếu sử dụng các loại "hello", tôi sẽ nhận được các giá trị sau cho sự bắt đầu, sau và đếm giá trị của các beforeTextChanged() phương pháp:

start = 0; count = 0; after = 1;  // typed 'h' 
start = 1; count = 0; after = 1;  // typed 'e' 
start = 2; count = 0; after = 1;  // typed 'l' 
start = 3; count = 0; after = 1;  // typed 'l' 
start = 4; count = 0; after = 1;  // typed 'o' 

Bây giờ, trên ICS/Samsung Galaxy Nexus, với những gợi ý chính tả hoạt động, khi tôi gõ văn bản tương tự, từ này được nhấn mạnh trong EditText cho đến khi tôi chèn một không gian và tôi nhận được kết quả như sau:

start = 0; count = 0; after = 1;  // typed 'h' 
start = 0; count = 1; after = 2;  // typed 'e' 
start = 0; count = 2; after = 3;  // typed 'l' 
start = 0; count = 3; after = 4;  // typed 'l' 
start = 0; count = 4; after = 5;  // typed 'o' 

Theo tài liệu, hành vi sau tôi s được xem là "người dùng gõ một chữ cái từ, sau đó xóa nó và gõ một từ 2 chữ cái, sau đó xóa nó và gõ một từ 3 chữ cái, và như vậy ...". Và khi tôi trình diễn trên EditText, tôi nhận được "hello", "", "hell", "", "hel", "", "he", "", "h", nơi tôi chỉ muốn có " xin chào", "".

Có cách nào để ngăn các đề xuất chính tả cung cấp các giá trị này hay không. IMHO, điều này phá vỡ hợp đồng được đưa ra trong tài liệu phương pháp.

Nếu không, có cách nào để ngăn chặn đề xuất trên văn bản chỉnh sửa của tôi không?

Trả lời

5

Bạn có thể ngăn gợi ý một cách dễ dàng đủ:

<EditText 
    ... 
    android:inputType="textNoSuggestions" /> 

Tôi chắc chắn điều này sẽ làm việc tốt với tất cả các thiết bị ICS. Tôi tin rằng lĩnh vực này không có sẵn trên các thiết bị cũ nhưng trong những trường hợp đó không phải là một vấn đề.

+0

Hoặc theo chương trình: editText.setInputType (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); –

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