땀이 삐질삐질 나는 개발 일기

Android EditText 상황에 따라 키보드 컨트롤 본문

개발 Tip

Android EditText 상황에 따라 키보드 컨트롤

삐질 2019. 5. 27. 13:27
안녕하세요. 삐질삐질 개발하는 개발자 삐질입니다.
오늘은 EditText 의 Focus 옵션을 따로 조작하지 않고 ,InputType으로만 키보드를 제어하는 팁에 대해 알아보도록 하겠습니다.


기존의 흔히들 알고있는 컨트롤 방법은 

imm.hideSoftInputFromWindow(binding.etRec.getWindowToken(),0);
imm.showSoftInput(binding.etRec,0);

위와 같은 방법일 겁니다. 하지만 이 방법은 EditText의 클릭리스너 내부에 선언하게 되면 작동하지 않는 메서드입니다.


- 클릭했을 때, 포커스에 따라 내부인 KeyBoard Show / Hide가 아닌, 코드로 원하는 시점에만  Show/Hide( 클릭 리스너 밖에서는 위와 같은 코드가 작동 함 )  -


이와 같은 상황일떄 , ClickListener 내부에 위와 같은 코드들을 선언하면 Keyboard가 원하는 대로 조작되지 않음을 알수 있습니다.


이때는


상황에서 따라 아래와 같이 , InputType으로 컨트롤해주시면 키보드 조작 Method가 유효하게 됩니다.


@Override
public void onResume() {
super.onResume();
binding.etRec.setInputType(0);
GetContactsTask getContactsTask = new GetContactsTask();
getContactsTask.execute();
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.etRec:
viewModel.liveDataShowDialog.setValue(true);
viewModel.directInputNumber.setValue(false);
imm.hideSoftInputFromWindow(binding.etRec.getWindowToken(),0);

break;
case R.id.directBtn:
viewModel.directInputNumber.setValue(true);
viewModel.liveDataShowDialog.setValue(false);
binding.etRec.setInputType(1);
imm.showSoftInput(binding.etRec,0);
break;


Comments