시작하기
View 에는 fadingEdge라는 값을 설정 할 수 있습니다.
그래서 ListView를 보면, 아이템 개수가 많을 경우 위/아래에 희미한 색상의 라인이 생기는 것을 볼 수 있습니다.
<그림1. FadingEdge를 제거한 ListView>
<그림2. FadingEdge의 길이와 색상을 변경한 ListView>
FadingEdge 제거하기
안드로이드 Developer Document에는 아래의 attribute로 설정하라고 합니다.
이때 attribute는 1개 또는 그 이상을 선택해도 상관없습니다.
android:requiresFadingEdge="[none | horizontal | vertical]"
하지만, 제가 사용하고 있는 framework에는 android:requiresFadingEdge 속성이 없더군요.
대신 android:fadingEdge라는 속성이 있었습니다. 혹시 위의 attribute가 안되시면 android:fadingEdge로 해보세요.
android:fadingEdge="[none | horizontal | vertical]"
ex) FadingEdge 제거하기
android:fadingEdge="none"
FadingEdge 길이 변경하기
FadingEdge의 길이는 android:fadingEdgeLength 속성으로 변경하실 수 있습니다.
이때 값은 dimension 값으로 px, dp, sp 등의 값으로 하셔야 합니다.
android:fadingEdgeLength="20sp"
FadingEdge 색상 변경하기
FadingEdge의 색상은 android:cacheColorHint 속성으로 변경하실 수 있습니다.
android:cacheColorHint="#FF7F7F7F"
질문
먼저 저는 키 기반의 환경에서 작업을 하고 있습니다. 아마도 터치 기반의 환경은 이 문제와는 해당사항이 없지 않을까 생각됩니다.
ListView를 setItemsCanFocus(true)를 설정하고 FadingEdge를 none으로 했을 때, FadingEdge가 none으로 설정이 됐지만, KEYCODE_DPAD_UP/KEYCODE_DPAD_DOWN 이벤트로 스크롤이 되지 않는 현상을 보이고 있습니다. 또한 FadingEdgeLength를 설정을 해도 동일한 현상을 보이고 있습니다. 해결책을 아시는 분은 댓글을 달아주셨으면 감사하겠습니다.
해결방법
ListView를 사용 할 때는 되도록 Item이 직접 focus를 갖도록 하지 않아야 할 것 같습니다. ListView로부터 focus를 뺏으면 ListView를 제어하는데 좀 더 신경을 많이 써야 되네요.
해결 방법은 직접 키 이벤트를 받아서 직접 scroll 하는 방법을 사용했습니다.
코드를 통해서 되지 않는 이유를 증명하면 좋겠지만, 정확한 시작점을 잡지 못하겠네요..
'안드로이드' 카테고리의 다른 글
[안드로이드] Collection을 사용 할 때 ConcurrentModificationException을 피하는 방법 (0) | 2013.03.06 |
---|---|
[안드로이드] APK 파일 SIGN 하기 (0) | 2012.10.29 |
안드로이드 ListView와 Thread를 사용할 때 동기화 오류 (IllegalStateException) (0) | 2012.10.08 |
[안드로이드] uncaught exception 사용하기 (UncaughtExceptionHandler) (0) | 2012.10.02 |
[안드로이드] Context를 Activity로 강제 타입 캐스팅시 발생하는 문제(Shutting down VM) (0) | 2012.10.02 |
[안드로이드] /system 디렉토리 remount 하기 (0) | 2012.09.19 |
[안드로이드] 텍스트 파일의 캐릭터 셋(Character Set) 얻기 (0) | 2012.09.04 |
[안드로이드] 이클립스 업데이트 오류 (Install download0) (0) | 2012.07.27 |
[안드로이드] AIDL에 Parcelable 데이터 사용하기 (2) | 2012.07.04 |
[안드로이드] Framework에 Service 추가하기 (0) | 2012.06.21 |