ListView 포커스 문제
이 섹션 소개
Button, CheckBox, EditText 및 기타 컨트롤을 ListView 항목에 추가하는 경우 고려할 수 있습니다. 문제: ListView의 포커스 문제! 이 섹션에서는 이 문제를 해결하는 몇 가지 방법을 알아봅니다!
Button, CheckBox 및 EditText를 사용하여 간단한 listView를 작성할 수 있지만 클릭하면 ListView 항목을 클릭할 수 없고, onItemClick 메서드를 트리거할 수 없으며, onItemLongClick 메서드를 트리거할 수 없습니다. 이것은 ListView의 포커스 문제입니다! 이는 ListView의 포커스가 다른 컨트롤에 의해 빼앗기는 것을 의미합니다. 이 문제를 해결하시겠습니까?
방법 1: 이 질문에 대한 제어를 선점한 구성 요소에 대해 설정: android:focusable="false" 또는 코드에서 제어권을 얻은 후 호출하세요.
setFocusable(false)게다가, android:focusable="false"를 설정하면 이 B가 포커스를 얻을 수 있지만 갑자기 작동하지 않습니다. 또 포커스가 안잡히고 작은 키보드가 뜨지 않습니다. 아직 해결 방법을 모르겠습니다. 다른 사람들은 ListView의 버그라고 들었습니다. 해결방법 아시는 분 알려주시면 감사하겠습니다~언급한 대로 위 속성을 아이템의 루트 노드에 추가하세요 레이아웃,방법 2: 아이템 루트 노드 설정 android:descendantFocusability="blocksDescendants"
android:descendantFocusability="blockDescendants"
, 이 속성에는 세 가지 선택적 값이 있습니다:
좋아요, 위는 ListView를 해결하는 두 가지 방법입니다. 초점 문제, 매우 간단합니다. EditText에 관한 내용이 있는 경우 초점 문제에 대한 솔루션을 환영합니다. 감사합니다~beforeDescendants: viewgroup은 하위 클래스 컨트롤에 우선 순위를 부여하고 focus
- afterDescendants: viewgroup은 하위 클래스 컨트롤에만 적용됩니다. 필요하지 않습니다. 포커스를 받을 때만 포커스를 받으세요
- blocksDescendants: 뷰그룹은 하위 클래스 컨트롤을 덮어쓰고 직접 포커스를 가져옵니다
- 이 섹션 요약: