Android - 키패드 제어

유의선·2023년 7월 19일
0

EditText로 만든 입력상자에 포커스를 주면 화면 하단에 소프트 키패드가 생겨 입력할 수 있는 상태가 된다. 이 키패드는 자동으로 열리고 닫혀 별도의 코딩 없이 이용할 수 있지만 필요하다면 코드를 통해 직접 키패드를 열거나 닫을 수 있다.

키패드와 관련된 기능은 InputMethodManager 객체로 사용할 수 있는데 이 객체는 시스템 서비스이므로 getSystemService 메소드로 참조한 후 다음과 같은 메소드를 사용해 키패드를 열거나 닫을 수 있다

boolean showSoftInput(View view, int flags)
boolean hideSoftInputFromWindow(IBinder windowToken, int flags [, ResultReceiver resultReceiver])

키패드를 열고 닫는 기능을 사용할 때 입력상자에 입력할 문자열의 종류를 지정해줘야 하는 문제가 있다.
이는 입력상자의 inputType 속성을 설정함으로서 지정해줄 수 있다.

inputType 속성 값설명
number숫자
numberSigned0보다 큰 숫자
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 메소드를 사용하였다.


1개의 댓글

comment-user-thumbnail
2023년 7월 19일

좋은 글 감사합니다!

답글 달기