키패드 제어하기
입력 상자에 포커스를 주면 자동으로 소프트 키패드가 생겨 입력할 수 있는 상태가 된다.
이렇게 자동으로 열리고 닫힐 경우에는 별도의 코딩 없이 사용할 수 있지만 필요에 의해
코드를 통해 직접 키패드를 열거나 닫을 수 도 있다.
예를 들어, 로그인 화면에서 [로그인] 버튼을 눌러 성공적으로 로그인 되었을 때 열려 있던
소프트 키패드를 코드에서 닫히게 만들어야 한다.
키패드와 관련된 기능은 InputMethodManager
객체로 사용할 수 있다.
이 객체는 시스템 서비스이므로 getSystemService 메서드로 참조 후 다음과 같은 메서드를 사용해
키패드를 열거나 닫을 수 있다.
1
2
boolean showSoftInput(View view, int flags)
boolean hideSoftInputFromWinow(IBinder windowToken, int flags [, ResultReceiver resultReceiver ])
키 패드 감추기
이 상태로 화면을 구성하고 앱을 실행 시키면 키패드가 자동으로 올라온다.
자동으로 올라오지 않게 하려면 /app/manifests/AndroidManifest.xml 을 아래와 같이 태그를 추가한다.
AndroidManifest.xml
1
2
3
4
5
6
...
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateHidden"
...
그리고 입력 상자를 누르면 숫자 키패드가 보이게 하기 위해 입력 상자의 inputType을 number로 바꾼다.
버튼을 클릭하면 키패드를 사라지게 하기 위해 아래와 같이 코드를 작성한다.
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener((v)->{
if(getCurrentFocus() != null){
// InputMetho 객체 참조하기
InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(INPUT_METHOD_SERVICE);
// 키 패드 감추기
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),0);
}
});
}
}
결과
위처럼 버튼을 누르면 키패드가 사라진다.