'android setInputType'에 해당되는 글 1건

  1. 2012.06.14 [Android] EditText 키보드 안나오게 하는 법 (4)
2012.06.14 14:54
보통 액티비티에 EditText를 선언해놓으면 

기본적으로 포커싱되서 액티비티가 실행되면 자동으로 자판이 올라오게 되어있습니다.

이것을 조작하는 방법을 알아보겠습니다.

먼저 간단히, 그냥 onCreate()에서 자판이 올라오지 않게 하려면 


AdroidMenifast.xml에 등록해놓은 Activity 애트리뷰트에 


android:windowSoftInputMode="stateHidden|adjustPan"


속성만 주시면 됩니다.



하지만 한 액티비티에서 어떤 경우엔 자판이 올라와야 하고 어떤 경우엔 안올라오게 해야한다면?


위의 속성 그대로에 EditText에 클릭 이벤트를 준 후 


그 이벤트에 InputMethodManager를 이용하여 자판을 띄우면 쉬울 것이라 생각하기 쉽습니다.


ex Fail)


EditText testEdt;

...

testEdt = (EditText)findViewById(R.id.testEdt);

testEdt.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                // TODO Auto-generated method stub

                InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

                mgr.showSoftInput(testEdt, InputMethodManager.SHOW_IMPLICIT); 

            }

        });

     }


그런데 안됩니다.






해결 방법은 간단합니다. android:windowSoftInputMode="stateHidden|adjustPan" 속성을 빼고


EditText 변수에 setInputType(0) 를 선언해주면 됩니다. 


0은 NULL 이라는 소리입니다. 


ex Success)


EditText testEdt;

...

testEdt = (EditText)findViewById(R.id.testEdt);

testEdt.setInputType(0);

testEdt.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                // TODO Auto-generated method stub

testEdt.setInputType(1);

                InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

                mgr.showSoftInput(testEdt, InputMethodManager.SHOW_IMPLICIT); 

            }

        });

     }


InputMethodManager를 빼지 않는 이유는 이것을 뺀다면 두번 터치해야 키보드가 올라오기 때문이랍니다~



Posted by 그린블로그 DEV그린