'android EditText 키보드'에 해당되는 글 2건

  1. 2016.01.12 [Android] 다이얼로그에서 EditText 키보드 바로 띄우기
  2. 2012.06.14 [Android] EditText 키보드 안나오게 하는 법 (4)
2016.01.12 04:15

커스텀 다이얼로그에 EditText를 넣었을 때


다이얼로그가 뜨자마자 바로 키보드가 뜨게 하는 소스입니다.



InputMethodManager ime = null;

ime = (InputMethodManager)Category_Edit.this.getSystemService(Context.INPUT_METHOD_SERVICE);

ime.showSoftInputFromInputMethod(((EditText)dialog.findViewById(R.id.edt)).getWindowToken(), InputMethodManager.SHOW_FORCED);


dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);



그리고 이렇게 코드를 넣을 땐


xml의 EditText에


 android:selectAllOnFocus="true"


이 옵션을 넣어주셔야 글자를 모두 선택하여


키보드를 쳤을 때 자연스러워집니다.

신고
Posted by 그린블로그 DEV그린
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그린