내 전체 애플리케이션에서 Android 소프트 키보드가 등장하는 것을 막는 방법

StackOverflow https://stackoverflow.com/questions/2429595

  •  19-09-2019
  •  | 
  •  

문제

저장되지 않은 하드웨어 키보드가있는 하드웨어 장치에서 애플리케이션을 개발하고 있으므로 항상 블랙 베리와 같이 표시됩니다. 따라서 전체 응용 프로그램에 소프트 키보드가 표시되기를 원하지 않습니다. 알고 있습니다 또 다른 질문입니다 다음과 같은 코드 줄을 제공합니다.

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

그러나 나는 내 활동에 나타날 수있는 모든 장소에서 소프트 키보드를 숨기기 위해이 코드를 어디에 두어야하는지 모르겠습니다. 코드를 추가하려고 시도했습니다 Activity.onUserInteraction 아무 소용이 없습니다. 키보드가 나타나는 것 같습니다 ~ 후에 그만큼 onUserInteraction 실행.

나는 또한 내에 다음을 추가하려고 시도했다 <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

소프트 키보드가 여전히 나타납니다.

도움이 되었습니까?

해결책

귀하의 응용 프로그램은 아무것도하지 않아야합니다. 장치의 펌웨어에는 하드웨어 키보드가있는 다른 모든 Android 장치와 마찬가지로 하드웨어 키보드를 기반으로 소프트 키보드를 억제하는 구성이 포함되어 있어야합니다. 그런 일이 일어나지 않으면 하드웨어 제조업체와 상담하고이 문제를 해결할 계획인지 확인하십시오.

다른 팁

내일 프레젠테이션을위한 쉬운 해결 방법 :

나는 빈 전망을 가진 새로운 IME를 만들 것입니다. 다음은 코드를 볼 수있는 두 가지 OpenSource 프로젝트입니다.

입력 방법에 대해 더 알고 싶다면 입력 메소드 생성.

editText의 inputType가 0 인 경우 editText를 선택할 때 소프트 키보드가 나타나지 않습니다.

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(0);

물론 응용 프로그램의 모든 edittexts에 대해이를 수행해야합니다. 그렇지 않으면 항상 EditText를 서브 클래스로 설정하고 생성자에서 입력 유형을 0으로 설정할 수 있습니다.

XML InputType 매개 변수 설정은 수행되지 않습니다. 이는 Keylistener를 제거하지 않는 SetRawinputType 메소드에 대한 호출에 해당하기 때문에 수행되지 않습니다.

a bit custom edittext에서 oncheckistexteditor 메서드를 재정의하여 해결했습니다.

@Override
public boolean onCheckIsTextEditor() {
    return false;
}

편집 텍스트가있는 곳에이 코드를 넣으십시오 ..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top