Edit Text
입력 이있는 활동이 있습니다. 활동이 초기화되면 Android 키보드가 표시됩니다. 사용자가 입력에 집중할 때까지 키보드를 어떻게 숨길 수 있습니까?
android:windowSoftInputMode="adjustPan"
?
Edit Text
입력 이있는 활동이 있습니다. 활동이 초기화되면 Android 키보드가 표시됩니다. 사용자가 입력에 집중할 때까지 키보드를 어떻게 숨길 수 있습니까?
android:windowSoftInputMode="adjustPan"
?
답변:
나는 다음이 효과가 있다고 생각한다
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
나는 전에 이런 종류의 것을 위해 그것을 사용했습니다.
EditText
습니까? :) 이것은 활동이 시작될 때 키보드를 숨기는 것입니다.EditText
이것을 시도하십시오-
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
그렇지 않으면 매니페스트 파일의 활동에 선언하십시오.
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
이미 사용 된 경우 android:windowSoftInputMode
같은 값 adjustResize
또는 adjustPan
두 개의 값을 같이 결합 할 수 있습니다 :
<activity
...
android:windowSoftInputMode="stateHidden|adjustPan"
...
>
이것은 필요할 때마다 키보드를 숨기지 만 키보드가 표시되어야 할 경우 활동보기를 이동합니다.
이 두 속성을 부모 레이아웃에 추가하십시오 (예 : 선형 레이아웃, 상대적 레이아웃).
android:focusable="false"
android:focusableInTouchMode="false"
그것은 트릭을 할 것입니다 :)
true
Jack T의 답변에 따라 작동 하도록 설정했습니다 . 최근 버전에서 동작이 변경 되었습니까?
false
EditText 상자에서 포커스를 얻는 것이므로 아이디어 를 설정 해야하는 이유를 이해할 수 없습니다 .
그냥 AndroidManifest.xml에 추가하십시오
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden">
</activity>
"문제"가있는 .xml 레이아웃 파일 의 직접 상위 레이아웃에 다음 코드 행을 작성할 수도 있습니다 .
android:focusable="true"
android:focusableInTouchMode="true"
예를 들면 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
...
android:focusable="true"
android:focusableInTouchMode="true" >
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
편집하다 :
EditText가 다른 레이아웃에 포함 된 경우의 예 :
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
... > <!--not here-->
... <!--other elements-->
<LinearLayout
android:id="@+id/theDirectParent"
...
android:focusable="true"
android:focusableInTouchMode="true" > <!--here-->
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
</ConstraintLayout>
핵심은 EditText가 직접 초점을 맞출 수 없도록하는 것입니다.
안녕! ;-)
나를위한 최고의 솔루션, 수업 붙여 넣기
@Override
public void onResume() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onResume();
}
@Override
public void onStart() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onStart();
}
키보드를 숨기는 기능.
public static void hideKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
AndroidManifext.xml 파일에서 키보드를 숨 깁니다.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateHidden">
각 요소에 대해이 고유 속성을 시도 할 수 있습니다
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
요소가 초점을 맞추는 동안 키보드가 표시되지 않습니다
당신의 활동에 이것을 추가하십시오 :
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentFocus() != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return super.dispatchTouchEvent(ev);
}
<activity android:windowSoftInputMode="stateHidden" ...>