Home Key Pad
Post
Cancel

Key Pad

키패드 제어하기

입력 상자에 포커스를 주면 자동으로 소프트 키패드가 생겨 입력할 수 있는 상태가 된다.

이렇게 자동으로 열리고 닫힐 경우에는 별도의 코딩 없이 사용할 수 있지만 필요에 의해

코드를 통해 직접 키패드를 열거나 닫을 수 도 있다.

예를 들어, 로그인 화면에서 [로그인] 버튼을 눌러 성공적으로 로그인 되었을 때 열려 있던

소프트 키패드를 코드에서 닫히게 만들어야 한다.

키패드와 관련된 기능은 InputMethodManager 객체로 사용할 수 있다.

이 객체는 시스템 서비스이므로 getSystemService 메서드로 참조 후 다음과 같은 메서드를 사용해

키패드를 열거나 닫을 수 있다.

1
2
boolean showSoftInput(View view, int flags)
boolean hideSoftInputFromWinow(IBinder windowToken, int flags [, ResultReceiver resultReceiver ])

키 패드 감추기

이 상태로 화면을 구성하고 앱을 실행 시키면 키패드가 자동으로 올라온다.

1

자동으로 올라오지 않게 하려면 /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);
            }
        });
    }
}

결과

ezgif com-gif-maker

위처럼 버튼을 누르면 키패드가 사라진다.

This post is licensed under CC BY 4.0 by the author.