2009-10-15 4 views
3

Android : 집중하면 스타일 변경

이 사용자 정의 레이아웃이 있습니다.

- LinearLayout 
    - FrameLayout 
     - ImageView 
    - TextView 

이 레이아웃은 클릭 이벤트 (LinearLayout.setOnClickListener() 사용)에 반응하며 레이아웃 XML 파일에서 android:focusable="true"를 사용하여 포커스 가능하게됩니다. 터치 스크린을 사용하는 경우이 모든 것이 잘 작동하지만 터치 스크린을 많이 사용하지 않고 탐색 키를 선호하거나 터치 스크린이없는 사용자에 대해서 생각하고 있습니다. 이러한 사용자는 ViewGroup에 포커스가있는 시점을 볼 수 없습니다 (는 키보드를 사용하여 초점을 맞출 수 있습니다).

내 질문은 : 어떻게 그 레이아웃에 집중할 때 변경할 수 있습니다 (ImageViewandroid:background 변경해야합니까?)? 나는 LinearLayout.setOnFocusChangeListener()을 사용할 수 있다고 생각하지만 XML 파일을 사용하는 것이 더 좋은 방법 일 것이라고 생각합니다.

답변

6

StateListDrawable (<selector> 루트 요소가있는 드로어 블 XML) 인 배경 이미지를 (LinearLayout?) 제공하십시오. 아마도 일반적인 경우에는 투명한 색을 사용하고 android:focused="true" 경우에는 다른 것을 사용하십시오. 그런 다음 초점을 맞추면 배경이 자동으로 변경됩니다.

+0

저는 연구 중이 었으며 방금 StateListDrawable에 부딪 혔습니다. 그것이 내가하고 싶은 것을 꽤 많이하는 동안, 그것은 정말로 완벽하지 않습니다. LinearLayout에 초점이 맞춰지면 ImageView의 배경을 바꾸고 싶습니다. StateListDrawable로는 할 수 없습니다. +1하지만, 매우 유용한 클래스를 가리 키기 위해! – Felix

+0

또한 StateListDrawables는 어디에 정의합니까? drawable/디렉토리 안에 XML 파일을 생성합니까? – Felix