ListView Item 내에 버튼을 다음과 같이 구현했다.
여기서 가족, 고등학교, 동아리 등에 해당하는 것이 버튼이다.
구현 원하는 방향
ListViewItem을 클릭했을 때는 상세페이지로
그룹명(버튼)을 클릭했을 때는 검색 기능으로 이동하려 한다.
결론
. ListViewItemClickListner와 버튼 클릭 이벤트를 모두 사용하고 싶다면 ListViewItem Layout의
descendantfocusability를 blocksDescendants로 설정한다.
android:descendantFocusability="blocksDescendants"
버튼이 아닌 곳을 클릭했을 때는 listView Item의 클릭 이벤트(B)가 실행됨..
button 클릭 시 A기능 실행됨.
또다른 해결책
Button의 Focusable
버튼은 기본적으로 focusable 이 true로 설정되어 있다.
즉, 아래 두 옵션에 대해서, Layout자체는 focus에 대한 옵션이 없으므로,
전부 button이 focus를 가져가게 된다.(욕심쟁이..)
android:descendantFocusability=“afterDescendants"
android:descendantFocusability=“beforeDescendants"
Button의 focusable을 false로 바꾸게 되면 두 가지 옵션 모두에서 원래 의도했던 바와 같이 잘 동작한다.
안드로이드 공식 Documenation
1. afterDescendants : 하위 객체 focus 이후에 현재 객체가 focus받음.
2. beforeDescendants : 하위 객체가 focus 받기 전에 현재 객체가 focus를 받음.
3. blocksDescendants : 하위 객체로의 focus를 차단함.
'안드로이드' 카테고리의 다른 글
[안드로이드] DatePickerDialog : 날짜 선택하기 (Kotlin) (0) | 2022.10.27 |
---|---|
[안드로이드] 스피너(콤보박스) Spinner- Kotlin 구현 (0) | 2022.10.13 |
[안드로이드] ListView 구현하기(Kotlin) (0) | 2022.10.02 |
[안드로이드] Bottom Navigation View 숨기기/ 프래그먼트에서 Activity View Control하기(Kotlin) (0) | 2022.09.22 |
[안드로이드] left,right vs start, end - RTL (0) | 2022.09.21 |
댓글