부터 프로그래밍 중으로 시작합니다. 내 레이아웃에 AutoCompleteTextView
보기를 만들었습니다. 사용자가 유효한 데이터를 필드에 입력 한 후에 동일한 매개 변수를 사용하여 동일한 방법으로 첫 번째 문자 바로 아래에 새로운 AutoCompleteTextView
개체를 만듭니다. 난 필드 참조를 모두 ArrayList
에 저장하는 중이며, 마지막으로 참조 할 수 있도록 아래쪽 (기본적으로 참조 목록의 마지막 요소) 아래에 새 필드가 있는지 확인합니다. - 그래서 모든 분야에서 계속됩니다.Android AutoCompleteTextView -보기를 "다시 선택"하여 동적 IME 옵션 변경을 처리합니다
: 새 필드를 만들 때, 나는 갓 만든 필드 EditorInfo.IME_ACTION_NEXT
및 nextFocusForward
속성 마지막 필드의 IME 옵션을 변경 - 프로그래밍 방식합니다. 달성하고자하는 것 : 사용자가 키보드에서 Enter를 누르면 오른쪽 필드의 포커스가 새 필드로 이동합니다.
ArrayList<AutoCompleteTextView> fields = new ArrayList<>();
//Creating freshlyCreatedField, IT'S STILL NOT IN THE fields LIST!
AutoCompleteTextView currentlySelectedField = fields.get(fields.size() - 1); // last element
currentlySelectedField.setImeOptions(EditorInfo.IME_ACTION_NEXT);
currentlySelectedField.setNextFocusForwardId(freshlyCreatedField.getId());
currentlySelectedField.setSingleLine(true); //ACTV needs it to get IME to work
//Adding freshlyCreatedField to the fields list,
//so next time it will be the currentlySelectedField
을하지만이 코드 아무것도 실행되지 후 현재 선택된 AutoCompleteTextView
객체에 발생합니다 나는 새로운 IME 옵션을 설정하려면이 코드를 사용하고 있습니다. 포커스를 지우거나 요청하는 기능이 작동하지 않아 반대의 방식으로 작동하게 만들었습니다 (+130 "보이지 않는"(기술적으로 GONE
) 필드를 만들 때마다) 훨씬 더 고통 스러울 것입니다.
한 가지 더 : 다른 필드를 선택하고 구성 변경 사항을 다시 선택하면 Enter 버튼이 처음 작동해야합니다! 프로그래밍 방식으로 동일한 작업을 수행 할 수 있다면 내 문제를 해결할 수 있습니다 ... 어떤 아이디어로도 처리 할 수 있습니까? (물론 더 나은 솔루션도 환영합니다 ...;))