내 응용 프로그램에 EditText가 있습니다. 이 editText는 editText.setText 메소드를 사용하여 10 초마다 코드를 통해 업데이트됩니다. 사용자가 소프트 키보드를 열 때이 업데이트를 중지하고 싶습니다. 사용자가 입력 작업을 완료하면 (완료 버튼) editText.setText에서 업데이트를 다시 시작하려고합니다. editText.setText 메서드를 사용하는 동안 내 EditText가 현재 활성화되어 있는지 확인하기 위해 InputMethodManager isActive (View)를 시도했습니다. 이것은 키보드가 표시 될 때 완벽하게 작동합니다. 그러나 사용자가 완료 버튼을 클릭하고 소프트 키보드가 숨겨지면 isActive (View)가 계속 true로 표시되고 editText.setText가 호출되지 않습니다. 다음은 10 초마다 editText를 업데이트하는 코드입니다.소프트 입력 키보드로 EditText를 수정하는 동안 editText.setText를 방지합니다.
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if(!imm.isActive(editText)){
editText.setText("10.2");
}
그래서이 imm.isActive (editText)는 사용자가 소프트 키보드의 완료 버튼을 누른 후에도 true를 반환합니다. 이 작업을 수행 할 수있는 방법을 제안하십시오.
안녕하세요, Piovezan, 답장을 보내 주셔서 감사합니다. –
문제 없습니다. 대답에 만족하면 왼쪽에있는 체크 표시를 클릭하여 동의하십시오. – Piovezan
해결책 1을 시도했지만 키보드의 가시성을 찾는 까다로운 방법이 있습니다. 많은 스레드에서 키보드의 가시성 전후에 화면 크기를 측정 할 것을 제안했습니다. 이 앱을 전체 화면 모드로 실행 중이므로이 방법을 사용할 수 없습니다. 솔루션 2가 유용 할 수 있지만 키보드에서 editText로 입력 할 때이 코드를 제어 할 수 없어이 코드를 동기화 된 블록에 넣을 수 없습니다. –