안드로이드 앱 개발에 있어서 EditText에 소프트키보드(가상키보드)을 터치가 아닌 동적으로 보이거나 숨기는 기능을 구현해야 할 때가 있다. 여기서 소프트키보드(가상키보드)를 강제로 보이거나 숨기는 방법에 대해서 알아본다. 이 기능을 구현하는 코드는 간단하다. 1. InputMethodManager 객체를 선언한다. InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); EditText input1 = (EditText) findViewById(R.id.input1); 우선 위와 같이 InptMethodManager 객체를 선언하고 getSystemService(INPUT_METHOD_SERVCIE) 로 입력에 관한 Manager를 반한받는다. 그리고 소프트키보드의 입력 포커스를 맞출 EditText 객체변수를 선언한다. 2. 키보드 보이기/올리기
첫번째 매개변수로 소프트키보드 입력 포커스가 수행될 EditText의 객체변수를 넣어준다. 두번째 매개변수는 별다른 Flag는 없으므로 0을 넘겨준다. 주의 : 첫버째 매개변수가 다른 EditText에 포커스 되어있다면 키보드가 보여지지 않는다. 3. 키보드 숨기기/내리기 imm.hideSoftInputFromWindow(input1.getWindowToken(), 0); 첫번째 매개변수에 소프트키보드 입력 포커스에 해당되는 EditText의 객체변수의 getWindowToken()을 넣어준다. 두번째 매개변수에는 별다른 Flag는 없으므로 0을 넘겨준다. 아래는 샘플 소스 * activity_main.xml <?xml version="1.0" encoding="utf-8"?> * MainActivity.java package com.studio572.samplekeyboardshowhide; * 안드로이드 매니페스트(AndroidManifest.xml) 에서의 소프트키보드 제어하기 위 방법 외에 안드로이드 매니페스트(AndroidManifest.xml)에 설정값을 넣어줌으로써, 액티비티 시작시에 자동으로 소프트키보드를 보이거나 숨길 수 있다. activity 설정에서 android:windowSoftInputmode 의 value에 "stateAlwaysVisible" 과 "stateAlwaysHidden" 를 넣어주면 된다. * 안드로이드 매니페스트에서 소프트키보드 보이기 <activity android:name=".MainActivity" android:windowSoftInputMode="stateAlwaysVisible"/> * 안드로이드 매니페스트에서 소프트키보드 숨기기
|