[android] Android 소프트 키보드가 에뮬레이터에 표시되지 않음

저는 Android를 처음 사용합니다. 나는 벌써 2 시간을 검색에 보냈다. 내가 시도하는 소프트 키보드는 내 EditText. 간단하게 만듭니다.

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

나는 시도했다 :

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

과:

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);

         }
     });

나는 또한 시도했다 :

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

이 줄을 AndroidManifest.xml파일에 넣어 보았습니다 .

 android:windowSoftInputMode="stateVisible|adjustResize"

그러나 모두 헛된 것입니다. 그것은 결코 보여주지 않습니다. 내가 무엇을 놓치고 있습니까?



답변

에뮬레이터가 하드웨어 키보드 를 사용하도록 설정되어 있지 않은지 확인해야합니다 . EditAVD에서 선택한 에뮬레이터를 선택하면 됩니다. 그런 다음 설정을 선택 취소 하십시오 Hardware keyboard present.

Genymotion 과 같은 다른 에뮬레이터를 사용해 볼 수도 있습니다 . 전체 하드웨어 가속 (멀티 코어 CPU 및 GPU)을 지원하며 Android 에뮬레이터 이미지보다 훨씬 빠르게 실행됩니다. Genymotion을 사용하는 경우 Android 내에서 하드웨어 키보드를 비활성화해야합니다 (자세한 내용은 아래 참조).

Genymotion에서 하드웨어 키보드를 비활성화하려면 : ->로
이동하여 에서 항목을 엽니 다 . 켜고 끌 수 있는 설정이 있습니다. 이 경우 당신은 당신의 실제 키보드를 사용하고있을 때 떨어져 표준 소프트 키보드 팝업해야 텍스트 필드에 포커스를 얻을 때마다.SettingsLanguage & inputDefaultKeyboard & Input MethodsHardware

Genymotion 설정 스크린 샷 :
기본 항목

여기에 이미지 설명 입력


답변

버전 2.1.1에서-가상 장치 설정을 클릭 한 다음 “입력에 가상 키보드 사용”확인란을 선택합니다.
여기에 이미지 설명 입력

여기에 이미지 설명 입력


답변

AS 1.1.0에서 하드웨어 키보드를 선택 해제하는 두 곳이 있습니다. 이것으로는 충분하지 않습니다.

여기에 이미지 설명 입력

이 작업을 수행해야합니다 (클릭 Tools | Android | AVD Manager한 다음 새 AVD를 만들거나 이전 AVD를 편집 한 다음 클릭 Show Advanced Settings, 아래로 스크롤하여 지움 Enable keyboard input).

여기에 이미지 설명 입력


답변

Android Studio 2 이상 에뮬레이터에 화면 상 소프트 키보드를 사용 설정하는 방법은 에뮬레이터의 API 수준에 따라 다릅니다. API 15로 시작하는 다양한 방법을 테스트하고 아래 단계를 기록했습니다.

[A] API 15, 17, 19 및 21.

다음 단계는 온 스크린 소프트 키보드를 활성화하지만 하드웨어 컴퓨터 키보드를 사용하여 텍스트를 입력하고 AVD와 상호 작용하는 기능을 비활성화합니다.

  1. Android Virtual Device Manager (AVD)에서 작업 할 장치에 대한 편집 작업을 클릭합니다.
  2. 고급 설정 표시를 클릭하고 페이지 하단에서 “키보드”섹션까지 오른쪽으로 스크롤합니다.
  3. “키보드 입력 사용”옵션을 선택 취소합니다.

[B] API 22

하드웨어 키보드 설정으로 수행하는 작업에 관계없이 소프트 키보드가 표시됩니다. 소프트 키보드와 함께 하드웨어 키보드 지원을 활성화하려면

  1. AVD에서 작업하려는 장치에 대한 편집 작업을 클릭합니다.
  2. 고급 설정 표시를 클릭하고 페이지 하단에서 “키보드”섹션까지 오른쪽으로 스크롤합니다.
  3. “키보드 입력 사용”옵션을 선택하십시오.

[C] API 23

하드웨어 및 소프트 키보드를 사용하려면 …

  1. [B] 1 ~ 3 단계 수행
  2. 가상 장치에서 설정을 시작한 다음 언어 및 입력 / 현재 키보드를 선택합니다.
  3. 하드웨어 활성화-입력 방법 표시

하드웨어 키보드가 필요하지 않은 경우 AVD 고급 설정에서 “키보드 입력 활성화”옵션을 선택 취소합니다. 가상 장치의 설정을 변경할 필요가 없습니다.

[D] API 24 및 25

  1. 위의 [B] 1 ~ 3 단계를 수행하여 hardqare 키보드를 활성화할지 여부에 따라 “키보드 입력 활성화”옵션을 선택하거나 선택 취소합니다.
  2. 가상 장치에서 설정을 시작한 다음 언어 및 입력 / 물리적 키보드를 선택합니다.
  3. “가상 키보드 표시”사용

AVD에서 키보드 입력 활성화 옵션을 선택한 경우 이제 하드 및 소프트 키보드 입력을 모두 사용할 수 있습니다. AVD에서 옵션을 선택 취소하면 소프트 키보드가 표시됩니다.

[E] API 26

언어 및 입력 / 물리적 키보드에 도달하기 전에 장치 설정에서 추가 “시스템”메뉴 수준을 탐색해야한다는 점을 제외하면 [D] API 24 및 25와 정확히 동일합니다.


답변

에뮬레이터가 소프트 키보드를 지원하지 않을 수 있습니다.

하드웨어 속성 키보드 지원을 추가하고 에뮬레이터에 대해 true로 설정합니다.

이미 사실이면 이 답변확인하십시오.


답변

표시하려면 :

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);

그리고 숨기려면 :

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

그냥 이거 먹어봐 ….


답변