2011-12-08 36 views

Trả lời

-3

Bạn có thể thử một cái gì đó dọc theo dòng này:

InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
boolean showingKeyboard = imm.isActive(); 

Hope this helps!

EDIT:

Tùy chọn khác chỉ đơn giản là để buộc các bàn phím mở hoặc đóng cửa, tùy thuộc vào những gì bạn muốn người dùng xem :) Điều này sẽ dẫn đến hành vi sử dụng dễ dự đoán hơn và có khả năng nâng cao trải nghiệm người dùng.

+1

Nó trả về true tất cả thời gian, ngay cả khi bàn phím của tôi không hiển thị trên màn hình – aryaxt

+0

điều này sẽ không hoạt động nếu ai đó đang sử dụng menu dài bấm để kích hoạt bàn phím. Nó chỉ cho bạn biết nếu một chế độ xem đang hoạt động để nhận các sự kiện bàn phím mềm. –

+0

@ Pheonixblade9: Điều này không hoạt động, đọc docu trên 'isActive()' cẩn thận hơn! Nó không phải về khả năng hiển thị nhưng về trạng thái 'hoạt động'. – Bondax

1

thử this hoặc this workaround từ trước đến nay không thể thực hiện trong "đơn giản" sdk phương pháp gọi

3

Tôi nghĩ thread này nên trả lời câu hỏi của bạn. Để tóm tắt, bạn có thể cung cấp cho chế độ xem gốc của một hoạt động, chẳng hạn như "@ + id/activityRoot" và sau đó móc GlobalLayoutListener vào ViewTreeObserver cho chế độ xem đó. Trong người nghe là nơi bạn kiểm tra khả năng hiển thị của bàn phím, như vậy:

final View activityRootView = findViewById(R.id.activityRoot); 
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
    if (getResources().getConfiguration().keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) { // Check if keyboard is not hidden 
    // ... do something here 
    } 
    } 
}); 

Đây là một sự kết hợp của @Reuben_Scratton và @ câu trả lời Yogesh trong các chủ đề trên.

UPDATE: Lưu ý rằng các tài liệu cho keyboardHidden nói rằng nó sẽ luôn luôn trở Configuration.KEYBOARDHIDDEN_YES nếu có một bàn phím cứng có sẵn trên thiết bị (ví dụ như một Motorola Droid 1 & 2)

+4

Nó không hoạt động. Nó luôn luôn trả về Configuration.KEYBOARDHIDDEN_NO cho tôi (không có bàn phím cứng trên thiết bị của tôi). –

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