2011-01-06 42 views
28

Câu hỏi của tôi là: Làm thế nào tôi có thể cập nhật hiển thị nút tác vụ của bàn phím ảo khi đang di chuyển?Làm cách nào để cập nhật nút tác vụ trình chỉnh sửa khi đang di chuyển?

Bài đăng khác có vẻ là về việc thay đổi thao tác chỉnh sửa TRƯỚC KHI bàn phím được hiển thị: Android: Can't figure how to use setImeActionLabel. Tôi muốn thay đổi nút hành động bàn phím mềm khi nó được hiển thị.

Tôi đã thành công một phần: - Tôi có thể thay đổi hành động bằng cách sử dụng: editText.setImeOptions (EditorInfo.IME_ACTION_GO); - Tôi cũng có thể vẽ lại bàn phím bằng cách sử dụng: InputMethodManager.restartInput (editText); Tôi làm điều này bằng cách sử dụng TextWatcher.afterTextChanged. - Tuy nhiên, tôi có một vấn đề với điều này. Nếu tôi bấm một phím, trên đầu trang bàn phím sẽ hiển thị phím nào đã được nhấn. Nhưng khi tôi gọi restartInput (...), điều này cũng ẩn chế độ xem hiển thị phím nào đã được nhấn. Điều này có vẻ như hành vi bình thường đối với tôi, nhưng tôi cần một cách để giải quyết nó.

Mở rộng EditText và ghi đè lênKeyUp không phải là một ý tưởng hay, xem: https://groups.google.com/forum/?fromgroups#!topic/android-developers/RIxGfx5qOjM.

Lớp KeyboardView có chính xác những gì tôi cần (invalidateKey), nhưng tôi nghĩ rằng chỉ có thể truy cập được khi bạn tạo phương thức nhập của riêng mình.

Bất kỳ ai khác có ý tưởng nào tốt hơn?

+0

Vô hiệu hóa chế độ xem không hoạt động? –

Trả lời

1

Hãy cố gắng cụ thể hơn khi bạn mô tả những gì bạn muốn làm ... tôi cần phải đọc bài viết của bạn nhiều lần để có thể hiểu được yêu cầu của bạn ..

Vì vậy, những gì bạn muốn làm là cách phản ứng với bất kỳ phím nào được nhấn trên bàn phím và hiển thị thông tin về phím đó trong phím thao tác trên bàn phím. Nếu đó không phải là plz mục tiêu của bạn để giải thích thêm ...

Nếu có, vì vậy tôi đoán bạn sẽ cần phải sử dụng editaL EditText (không hiển thị) cho phép gọi et0. sau khi hoàn thành chèn một chữ cái hoặc bất kỳ mẫu nào bạn xác định thông qua ontextchanged trong văn bản chỉnh sửa của bạn, thay đổi tiêu điểm thành et0 .. để bạn có thể thay đổi actionKey .. và sau đó gửi tiêu điểm trở lại editText của bạn .. để bạn có thể chuỗi hoặc timertask, hoặc bất kỳ cách nào để quản lý việc thay đổi tập trung tạm thời này vào và từ et0 .. tại đây không cần thiết phải khởi động lại đầu vào.

hy vọng rằng sẽ giúp bạn ..

1

Bạn đã cố gắng thay đổi /system/usr/keychars/default.kcm on-the-fly trước khi gọi đang vẽ lại của bạn? (tên tệp có thể khác nhau tùy thuộc vào phiên bản Android).

Ở đó, bạn được phép đặt không chỉ các ký tự đầu ra chính, mà còn đặt giá trị hiển thị khóa. Tôi đã không thử nó, nó cũng có thể phải chịu một sự chậm trễ, nhưng nó có giá trị một thử.

0

Điều này sẽ rất hữu ích cho bạn.

EditText in = new EditText(this); 
in.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence cs, int s, int b, int c) { 
     Log.i("Key:", cs.toString()); 
    } 
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence cs, int i, int j, int k) {} 
}); 
+0

Lần sau hãy sử dụng thẻ để đăng mã. – Flawyte

+0

Chào mừng bạn đến với SO, đây là một cách hay để giải thích lý do tại sao nên sử dụng giải pháp của bạn chứ không phải chỉ là cách thực hiện. Điều đó sẽ làm cho câu trả lời của bạn có giá trị hơn và giúp người đọc tiếp tục hiểu rõ hơn về cách bạn làm điều đó. Tôi cũng khuyên bạn nên xem Câu Hỏi Thường Gặp của chúng tôi: http://stackoverflow.com/faq. – ForceMagic

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