Tôi đang tạo một trò chơi đánh máy đơn giản trong Android. Tôi không gặp vấn đề gì khi nhập liệu từ bàn phím vật lý, nhưng bây giờ tôi đang cố gắng để có được bàn phím mềm xuất hiện mà không có EditText. Cho đến nay, tôi đã thử như sau:Tôi có thể sử dụng bàn phím mềm mà không có EditText không?
1. EditText với tầm nhìn = "vô hình" và dòng này:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(keyboard_edittext, InputMethodManager.SHOW_FORCED); // SHOW_IMPLICIT also failed
2. Dòng này trong onCreate()
:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Phương pháp này thực sự hiển thị một ô trống màu trắng trên dưới 10% của màn hình nhưng không phải bàn phím, mặc dù khi tôi chạy nó bây giờ nó không có gì.
3. Một hai dòng trong onCreate()
:
InputMethodManager m = (InputMethodManager)this.getSystemService (Context.INPUT_METHOD_SERVICE); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
Không may mắn trên bất kỳ trong số này. Có thể hiển thị bàn phím mềm (và sau đó sử dụng onKeyUp
/onKeyDown
) mà không tập trung vào EditText không?
Ngay bây giờ, cách duy nhất tôi có thể thấy là tiếp cận điều này là tạo ra việc triển khai bàn phím mềm của riêng tôi (tức là xây dựng nó từ đầu). Không mong chờ cái đấy!
Ngay cả khi bạn quản lý để hiển thị bàn phím mềm, onKeyUp()/Down() sẽ không được gọi - ít nhất là không dành cho tất cả các phím và trên tất cả các phiên bản Android. Trong một số phiên bản Android (cũ hơn) (tôi nghĩ 1.5 và có thể 1.6) onKeyDown() được gọi bằng các phím số, nhưng không có chữ cái. Tuy nhiên, nói chung bằng cách sử dụng onKeyDown() để nhận đầu vào bàn phím mềm sẽ không dẫn bạn đến kết quả mong muốn - điều này sẽ chỉ hoạt động đúng cách bằng bàn phím cứng. – ubuntudroid