안드로이드에서 EditText와 같은 뷰를 가진 액티비티가 시작되면 소프트 키보드가 항상 보이는 채로 시작된다.
키보드가 보이지 않는 채로 액티비티를 시작하고 싶다면
Activity를 상속받은 클래스에서 onResume 메서드를 아래와 같이 오버라이딩 한다.
@Override protected void onResume(){ super.onResume(); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); }
만약 특정 순간(이벤트 처럼) 후에 키보드를 감추거나 보이게 할 때는 아래와 같이 하면 된다.
// InputMethodManager를 가져옴 InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); // 감출 때 imm.hideSoftInputFromWindow(ViewName.getWindowToken(), 0); // 보이게 할 때 imm.showSoftInput(ViewName, 0);
+ 2012.06.10 추가
애초에 포커스를 EditText로 주지 않는 방법도 있다.
해당 액티비티의 레이아웃 파일에서 레이아웃에 focusable, focusableInTouchMode 애트리뷰트를 추가하고
값을 true로 주고 requestFocus 태그를 추가한다.
<LinearLayout
... 다른 속성들
android:focusable="true"
android:focusableInTouchMode="true">
<requestFocus/>
...
</LinearLayout>
이는 포커스를 가질 수 없는 레이아웃에 강제로 포커스를 가지게 하고 포커스를 줌으로써
EditText가 포커스를 가지지 않게하여 소프트 키보드를 보이지 않게 하는 방법이다.
'밤을 지새다 > Android' 카테고리의 다른 글
안드로이드 개발 팁 모음 (0) | 2012.05.30 |
---|---|
XML 레이아웃 코드 재사용성 높이기 (0) | 2012.05.30 |
DIP to Pixel, Pixel to DIP (0) | 2012.04.10 |
NDEF Text Record Type Definition (0) | 2011.08.17 |
[NFC] NDEF 메시지를 읽는 액티비티 만들기 - 작성 중 (0) | 2011.08.16 |