EditText로 만든 입력상자에 포커스를 주면 화면 하단에 소프트 키패드가 생겨 입력할 수 있는 상태가 된다. 이 키패드는 자동으로 열리고 닫혀 별도의 코딩 없이 이용할 수 있지만 필요하다면 코드를 통해 직접 키패드를 열거나 닫을 수 있다.
키패드와 관련된 기능은 InputMethodManager 객체로 사용할 수 있는데 이 객체는 시스템 서비스이므로 getSystemService 메소드로 참조한 후 다음과 같은 메소드를 사용해 키패드를 열거나 닫을 수 있다
boolean showSoftInput(View view, int flags)
boolean hideSoftInputFromWindow(IBinder windowToken, int flags [, ResultReceiver resultReceiver])
키패드를 열고 닫는 기능을 사용할 때 입력상자에 입력할 문자열의 종류를 지정해줘야 하는 문제가 있다.
이는 입력상자의 inputType 속성을 설정함으로서 지정해줄 수 있다.
inputType 속성 값 | 설명 |
---|---|
number | 숫자 |
numberSigned | 0보다 큰 숫자 |
numberDecimal | 정수 |
text | 텍스트 |
textPassword | 패스워드로 표시 |
textEmailAddress | 이메일로 표시 |
phone | 전화번호로 표시 |
time | 시간 |
date | 날짜 |
activity_main.xml 파일에 버튼과 입력상자를 하나씩 추가하였다.
입력상자는 입력될 문자열의 종류를 바꿔보기 위해 inputType 속성을 number로 바꾸었다.
MainActivity.java 파일에 코드를 작성하였다.
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(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(getCurrentFocus()!=null){
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
}
});
}
}
버튼을 눌렀을 때 키패드가 닫히도록 하였다.
getSystemService 메소드로 참조한 InputMethodManager 객체를 만든 후
InputMethodManager 객체의 hideSoftInputFromWindow 메소드를 사용하였다.
좋은 글 감사합니다!