화면이 나타날 때 필드의 자동 초점 / 키보드 팝업을 제거하는 방법은 무엇입니까?


105

첫 번째 필드가 EditText 인 화면이 있고 시작시 초점이 맞춰지고 숫자 입력 유형도 팝업되어 매우 짜증납니다.

활동이 시작될 때 포커스를 얻지 못하거나 입력 패널이 올라가지 않는지 어떻게 확인할 수 있습니까?

답변:


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

또는

응용 프로그램 태그에서 아래와 같이 매니페스트 파일의 활동 속성을 설정합니다.

android:windowSoftInputMode="stateHidden"

AndroidManifest.xml 파일에서 android : windowSoftInputMode 설정은 다른 값과 OR로 연결할 수 있습니다. 모드는 일반적으로 단일 값을 의미하지만이 경우 값은 플래그 모음입니다. 값 설명 :Formats: flag Values: adjustNothing, adjustPan, adjustResize, adjustUnspecified, stateAlwaysHidden, stateAlwaysVisible, stateHidden, stateUnchanged, stateUnspecified, stateVisible Specify the default soft-input mode for the main window of this activity. A value besides "unspecified" here overrides any value in the theme.
Jeff Muir

145

애플리케이션 매니페스트 파일로 이동하여 자동 키보드 팝업을 비활성화하려는 활동에 대해이 줄을 작성합니다.

android:windowSoftInputMode="stateHidden"

나를 위해 일하지 않았다. activity_main.xml에 넣었습니다. 이것은 onCreate ()에 넣었을 때 완벽하게 작동했습니다. getWindow (). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
glez

20

프로그래밍 방식으로 키보드를 표시하지 않지만 기본 위젯이 여전히 포커스 호출을 수신하려면 :

getWindow().setSoftInputMode(WindowManager.
                             LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

onResume()


11
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

내부에 상기 방법 호출 에서 onCreate () .IT 방지 softKeyboard을 사용자가 선택하지 않으면 보여 글고을 하여tapping or clicking.

또는 단순히 android:windowSoftInputMode="stateHidden"활동 태그를Manifest.xml


10

이것은 일반적으로 엉망입니다. 가장 먼저 시도하는 것은를 통해 다른 뷰로 초점을 훔치는 것입니다. 또한 focusable 및 focusableInTouchMode가 있어야합니다.

<TextView
  ...
  android:focusable="true"
  android:focusableInTouchMode="true">

    <requestFocus/>
</TextView>

작동합니다. 나는 이것이 더 깨끗한 접근이라고 생각하지만 그것은 또한 당신의 상태에 달려 있습니다. 나는 이것을 받아들이고있다.
JaydeepW

5

다른 뷰로 초점을 맞 춥니 다. 기본적으로 첫 번째 포커스 가능한 뷰는 레이아웃이 확장 될 때 포커스를받습니다. XML을 통해 다른 뷰에 대한 포커스를 요청할 수 있습니다.

<TextView
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:text="Some other view">

    <requestFocus />
</TextView>

이것은 모든보기에서 작동합니다.

프로그래밍 방식으로 수행하려면 view.requestFocus().


0
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}

3
StackOverflow에 오신 것을 환영합니다! 이것은 다른 포럼과 다릅니다. 답변을 변경하려면 edit링크를 클릭하고 변경하십시오. 그리고 코드를 선택하고 코드 샘플 버튼을 사용 {}하거나를 눌러 코드 형식을 지정해보십시오 Ctrl+K.
Peter Lang

0

android:windowSoftInputMode="stateHidden"매니페스트의 활동에 추가 하면 활동을 시작할 때 또는 Google에서 말하는 것처럼 키보드가 숨겨집니다.

사용자가 다른 활동을 떠나서 다시 돌아 오지 않고 적극적으로 활동으로 이동하는 경우

사용자가 뒤로 버튼을 누르고 다른 활동에서 활동으로 돌아갈 때도 키보드를 숨기려면 android:windowSoftInputMode="stateAlwaysHidden"


-1

이것을 시도하지 않았고 프로그래밍 컴퓨터 근처에 있지 않지만 프로그래밍 방식으로 부모보기에 초점을 보내거나 그 성격의 무언가가 트릭을 할 수 있다고 의심합니다. 그것은 해결책보다 해결 방법 일 가능성이 높지만 다시 테스트 할 수는 없습니다. 생각


1
나는 그것을 시도했지만 작동하지 않습니다. .requestFocus();버튼을 호출 했는데도 여전히 키보드 팝업이 나타납니다.
Pentium10

생각은 주석으로 추가 할 수 있습니다
알베르토 M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.