2012-02-16 55 views
10

Mục tiêu của tôi là hiển thị/ẩn bàn phím phần mềm trên màn hình trên một số sự kiện và đầu vào chặn từ bàn phím đó.Hiển thị bàn phím phần mềm mà không có EditText

Tôi phát hiện ra rằng bàn phím mềm có thể được hiển thị cho một số lớp con của Chế độ xem, nhưng tôi không cần bất kỳ biểu thị trực quan nào của tiện ích chỉnh sửa văn bản trên màn hình, chỉ có khả năng hiển thị ẩn bàn phím mềm bằng chương trình chặn đầu vào.

Cách tốt nhất để đạt được điều này là gì?

Trả lời

3

Bạn có thể buộc các Softkeyboard được hiển thị bằng cách sử dụng:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

và để ẩn:

((InputMethodManager) YourActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(findViewById(R.id.YOUR_VIEW).getWindowToken(), 0); 
+0

Phương pháp này không hiệu quả. showSoftInput trả về false và không có bàn phím nào được hiển thị – Nekuromento

+0

nó sẽ hoạt động, nhưng bạn có thể thử dòng sau: im.showSoftInput (this, InputMethodManager.SHOW_IMPLICIT); – Vikram

15

Thậm chí nếu câu hỏi này đã được hỏi gần như một năm trước đây nó không có một chấp nhận và câu trả lời đầy đủ hữu ích và kể từ khi tôi chạy vào cùng một vấn đề bản thân mình tôi mặc dù tôi muốn chia sẻ giải pháp của tôi:

Như Vikram đã chỉ ra đây là cách để hiển thị đầu vào mềm:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

NHƯNG bạn cũng phải thiết lập xem của bạn khi đặt tiêu điểm và đặt tiêu điểm trong chế độ cảm ứng:

myView.setFocusable(true); 
myView.setFocusableInTouchMode(true); 

hoặc theo quan điểm của XML của bạn:

android:focusable = "true" 
android:focusableInTouchMode = "true" 
+0

Làm thế nào để bạn chặn đầu vào bàn phím? – bgolson

+1

Bạn cần cụ thể hơn một chút. Đánh chặn theo cách nào? Bạn có thể ghi đè View.onKeyDown (int keyCode, KeyEvent event). Đó có phải là ý bạn không? – britzl

+0

+1 Cảm ơn! Đó là những gì tôi đang tìm kiếm. – bgolson

2

Trên thực tế, bạn có thể always chương trình một đầu vào bàn phím mềm từ tệp kê khai. thêm dòng này vào từng hoạt động bạn muốn hiển thị bàn phím mềm:

android:windowSoftInputMode="stateAlwaysVisible" 

Bàn phím mềm sẽ hiển thị không có vấn đề gì nếu không có văn bản trong chế độ xem. ví dụ:

<activity android:name=".ChatActivity" 
    android:windowSoftInputMode="stateAlwaysVisible"> 

</activity> 
Các vấn đề liên quan