Bàn phím mềm Android không bao giờ hiển thị trong trình giả lập


86

Tôi mới sử dụng Android. Tôi đã dành hai giờ để tìm kiếm. Bất cứ điều gì tôi thử bàn phím mềm không bao giờ được hiển thị cho của tôi EditText. Tôi tạo nó đơn giản:

EditText editText = (EditText)findViewById(R.id.editText);

Tôi đã thử:

 editText.requestFocus();//i tried without this line too
 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

và:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {

         @Override
         public void onFocusChange(View v, boolean hasFocus) 
         {    

                     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                     imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

         }
     });

tôi cũng đã thử:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

tôi đã thử đưa dòng này vào AndroidManifest.xmltệp:

 android:windowSoftInputMode="stateVisible|adjustResize"

nhưng tất cả đều vô ích. Nó chỉ không bao giờ hiển thị. Tôi đang thiếu cái gì?


đang mở bàn phím trong bất kỳ ứng dụng nào khác?
Niranj Patel

hãy thử cái này thay thế imm.showSoftInput (editText, InputMethodManager.SHOW_IMPLICIT); điều này thành imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0);
Aravin

@CapDroid không, thật không may. tôi đã thử trong một ứng dụng khác nhưng vẫn không thành công
Andrey Chernukha

@Aravinth vẫn không hoạt động
Andrey Chernukha

Bạn đang sử dụng giả lập hoặc thiết bị.
Aravin

Câu trả lời:


211

Bạn cần đảm bảo rằng trình giả lập của bạn không được đặt để sử dụng bàn phím phần cứng . Điều này có thể được thực hiện bằng cách chọn Edittrên một trình giả lập đã chọn trong AVD. Sau đó, bỏ chọn các Hardware keyboard presentthiết lập.

Bạn cũng có thể thử sử dụng một trình giả lập khác, chẳng hạn như Genymotion . Nó hỗ trợ tăng tốc phần cứng đầy đủ (CPU đa lõi cũng như GPU) và chạy nhanh hơn nhiều so với bất kỳ hình ảnh giả lập Android nào. Nếu sử dụng Genymotion, bạn sẽ cần phải tắt bàn phím phần cứng trong Android (xem chi tiết bên dưới).

Để tắt bàn phím phần cứng trong Genymotion:
Đi tới Settings-> Language & inputvà mở Defaultmục bên dưới Keyboard & Input Methods. Có một Hardwarecài đặt mà bạn có thể bật / tắt. Khi nó bật, bạn sử dụng bàn phím vật lý và khi nó tắt , bàn phím mềm tiêu chuẩn sẽ bật lên bất cứ khi nào một trường văn bản được lấy nét.

Ảnh chụp màn hình cho cài đặt Genymotion: Mặt hàng mặc định

nhập mô tả hình ảnh ở đây


4
Cuối cùng! Cảm ơn rât nhiều. Tôi ước tôi có thể tán thành câu trả lời của bạn hai lần. Đối với Genymotion - tôi đã dành một ngày để cố gắng thiết lập nó nhưng nó không hoạt động. Tôi thậm chí không thể ghi vào ủng hộ
Andrey Chernukha

Rất vui được giúp đỡ :) Về phần Genymotion, họ không ngừng cải thiện, nhưng nó vẫn chỉ là bản xem trước / beta. Tuy nhiên, kể từ khi tôi bắt đầu sử dụng nó, tôi đã không gặp một vấn đề nào. Có thể là tôi chỉ bắt đầu với nó khi họ đã giải quyết được hầu hết các vấn đề - hoặc tôi chỉ may mắn :). Điều đó nói rằng (các) trình giả lập Android cung cấp nhiều biến thể hơn, vì vậy tôi vẫn sử dụng chúng để kiểm tra khả năng tương thích.
free3dom

Thật tuyệt, bây giờ tôi đã có bàn phím ảo! Nhưng tôi có một EditText với android: inputType = "numberDecimal"> và bàn phím ảo không viết số (nó chỉ viết chúng nếu tôi viết một chữ cái trước chúng). Kiểm tra chính tả đã tắt ...
Michele

Hãy xem ở đây để biết các giải pháp khả thi.
free3dom

@ free3dom ~ "mở mục Mặc định trong Bàn phím & Phương thức nhập liệu" Đó là gì? Tôi không thấy mục đó.
IgorGanapolsky,

73

Trong phiên bản 2.1.1 - nhấp vào cài đặt thiết bị ảo của bạn - sau đó chọn hộp kiểm "sử dụng bàn phím ảo để nhập". nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


2

Có hai nơi để bỏ chọn bàn phím phần cứng trong AS 1.1.0. Cái này không đủ:

nhập mô tả hình ảnh ở đây

Phải thực hiện việc này (nhấp chuột Tools | Android | AVD Manager; sau đó tạo mới hoặc chỉnh sửa AVD cũ rồi nhấp chuột Show Advanced Settings; cuộn xuống và xóa Enable keyboard input):

nhập mô tả hình ảnh ở đây


Tôi đã dành thời gian tìm giải pháp này vì chỉ báo cuộn thường biến mất và chỉ hiển thị khi bạn bắt đầu cuộn. Tôi khuyên rằng nếu một chế độ xem có thể cuộn được để có một số dấu hiệu về khả năng đó một cách trực quan.
GregM

Không hoạt động đối với tôi trong Android Studio. Tôi bỏ chọn "Bật nhập bàn phím" nhưng trình mô phỏng vẫn KHÔNG hiển thị bàn phím phần mềm.
Evgenii

Bạn chỉ đề cập đến một "bỏ chọn". Cái còn lại là "Có bàn phím phần cứng", như được hiển thị - và bạn có thể cũng đã xóa nó. Có thể thử một thiết bị ảo khác? Tôi thấy trình giả lập AS khá khó dung nạp. Tải chậm, kỳ quặc như thế này .... Chúc may mắn.
DSlomer 64

2

Phương pháp bật bàn phím mềm trên màn hình cho Trình mô phỏng Android Studio 2+ phụ thuộc vào cấp API của trình mô phỏng. Tôi đã thử nghiệm các phương pháp khác nhau bắt đầu với API 15 và đã ghi lại các bước bên dưới.

[A] API 15, 17, 19 và 21.

Các bước sau sẽ kích hoạt bàn phím mềm trên màn hình nhưng sẽ vô hiệu hóa khả năng nhập văn bản và tương tác với AVD bằng bàn phím máy tính phần cứng.

  1. Trong Trình quản lý thiết bị ảo Android (AVD), nhấp vào hành động chỉnh sửa cho thiết bị bạn muốn làm việc
  2. Nhấp vào Hiển thị Cài đặt Nâng cao và cuộn phải xuống cuối trang đến phần "Bàn phím"
  3. Bỏ chọn tùy chọn "Bật nhập bằng bàn phím"

[B] API 22

Bàn phím mềm được hiển thị bất kể bạn làm gì với cài đặt bàn phím phần cứng. Nếu bạn muốn bật hỗ trợ bàn phím phần cứng cùng với bàn phím mềm,

  1. Trong AVD, nhấp vào hành động chỉnh sửa cho thiết bị bạn muốn làm việc
  2. Nhấp vào Hiển thị Cài đặt Nâng cao và cuộn phải xuống cuối trang đến phần "Bàn phím"
  3. Chọn tùy chọn "Bật nhập bằng bàn phím"

[C] API 23

Nếu bạn muốn sử dụng phần cứng và bàn phím mềm thì ...

  1. Làm theo [B] từ bước 1 đến bước 3
  2. Trên thiết bị ảo, Khởi chạy Cài đặt, sau đó chọn Ngôn ngữ và phương thức nhập / Bàn phím hiện tại
  3. Bật phần cứng - Hiển thị phương thức nhập

Nếu bạn không cần bàn phím phần cứng, trong cài đặt nâng cao AVD, hãy bỏ chọn tùy chọn "Bật nhập bằng bàn phím". Bạn sẽ không cần thay đổi bất kỳ cài đặt nào trên thiết bị ảo.

[D] API 24 và 25

  1. Thực hiện theo [B] bước 1 đến 3 ở trên, chọn hoặc bỏ chọn tùy chọn "Bật tính năng nhập bằng bàn phím" tùy thuộc vào việc bạn có muốn bật bàn phím hardqare hay không.
  2. Trên thiết bị ảo, Khởi chạy Cài đặt, sau đó chọn Ngôn ngữ và phương thức nhập / Bàn phím vật lý
  3. Bật "Hiển thị bàn phím ảo"

Nếu tùy chọn Bật nhập bằng bàn phím được chọn trong AVD thì bây giờ bạn sẽ có thể sử dụng cả đầu vào bàn phím cứng và mềm. Nếu bạn bỏ chọn tùy chọn trong AVD, bàn phím mềm sẽ được hiển thị bất kể.

[E] API 26

Hoàn toàn giống với [D] API 24 và 25 ngoại trừ bạn cần điều hướng qua cấp menu "Hệ thống" bổ sung trong cài đặt thiết bị trước khi chuyển đến Ngôn ngữ và phương thức nhập / Bàn phím vật lý


1

Có thể trình giả lập của bạn không hỗ trợ bàn phím mềm ..

Thêm thuộc tính phần cứng Hỗ trợ bàn phím và đặt nó thành true cho trình mô phỏng của bạn.

Nếu nó đã đúng thì hãy kiểm tra câu trả lời này.


1

Để hiển thị:

EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

Và để ẩn:

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);

Chỉ cần thử cái này ...


nó đã không giúp đỡ, không may
Andrey Chernukha

InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); ... thử này
FarhaSameer786

@Andrey Chernukha-tôi nghĩ rằng giả lập của bạn không hỗ trợ softkeyboard hoặc phần cứng của giả lập không hoạt động đúng .....
FarhaSameer786
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.