나는 지금까지 약 6 시간을 보냈고, 장애물에 부딪혔다. 일반적인 전제는 ListView
(어댑터에 의해 생성되었는지 또는 헤더보기로 추가되었는지 여부에 관계없이) EditText
위젯 및 Button
. 내가 원하는 것은 조그 볼 / 화살표를 사용하여 선택기를 평소와 같이 개별 항목으로 이동할 수있는 것뿐입니다.하지만 특정 행에 도달하면 (명시 적으로 행을 식별해야하는 경우에도) 포커스가있는 선택기를 사용하여 위치를 표시하는 대신 그 아이가 초점을 맞추기를 원합니다.
나는 많은 가능성을 시도했지만 지금까지 운이 없었습니다.
나열한 것:
<ListView
android:id="@android:id/list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
헤더보기 :
EditText view = new EditText(this);
listView.addHeaderView(view, null, true);
어댑터에 다른 항목이 있다고 가정하면 화살표 키를 사용하여 예상대로 목록에서 선택 항목을 위 / 아래로 이동합니다. 그러나 머리글 행 EditText
에 도달 하면 선택기와 함께 표시되며 조그 볼을 사용하여 집중할 방법이 없습니다 . 참고 :을 탭하면 해당 지점에 초점 EditText
이 맞춰 지지만 터치 스크린에 의존하므로 필수 사항은 아닙니다.
ListView
이 점에서 분명히 두 가지 모드가 있습니다.
1. setItemsCanFocus(true)
: 선택기가 표시되지 않지만 EditText
화살표를 사용하면 초점을 맞출 수 있습니다. 포커스 검색 알고리즘은 예측하기 어렵고 어떤 항목이 선택되었는지에 대한 시각적 피드백 (모든 행 : 포커스 가능한 자식 포함 여부)이 없으므로 둘 다 사용자에게 예기치 않은 경험을 제공 할 수 있습니다.
2. setItemsCanFocus(false)
: 선택기는 항상 비 터치 모드로 그려지며, EditText
탭해도 초점을 맞출 수 없습니다.
설상가상으로, 호출 editTextView.requestFocus()
은 true를 반환하지만 실제로는 EditText 포커스를 제공하지 않습니다.
내가 구상하고있는 것은 기본적으로 1과 2의 하이브리드입니다. 모든 항목에 초점을 맞출 수 있는지 여부를 목록 설정이 아닌 목록 의 단일 항목에 대해 초점을 설정 하여 선택기가 선택에서 원활하게 전환되도록합니다. 초점을 맞출 수없는 항목에 대한 전체 행과 초점을 맞출 수있는 하위 항목이 포함 된 항목에 대한 초점 트리를 순회합니다.
수취인이 있습니까?