[안드로이드] 포커스 ( Focus ) 처리

반응형



이어지는 글
UI 이벤트 처리        
이벤트 핸들러        
터치 (Touch) 모드     
포커스 처리          ◀ 현재 위치


읽기전에 손가락 한번 클릭~ >_<

고마워요 ~ Chu ~ ♥


안드로이드의 포커스 처리에 대한 내용입니다.


 포커스 처리

뷰는 isFocusable() 메소드를 통해 포커스를 가질 수 있는지의 여부를 확인 할 수 있습니다.



뷰의 포커스 보유 여부를 변경하려면 setFocusable() 메소드를 사용합니다.



또한 터치모드일때 isFocusableInTouchMode() 메소드를 사용하여 뷰의 포커스 보유여부를 확인이 가능합니다.



또, setFocusableInTouchMode() 메소드로 변경할 수 있지요.



포커스의 이동은 주어진 방향에서 가장 가깝에 인접한 것을 찾는 알고리즘을 사용합니다.

따라서 포커스 이동 방향을 변경하고 싶을 수도 있기 때문에, 이럴 경우 레이아웃의
nextFocusDown, nextFocusUp, nextFocusLeft, nextFocusRight 라는 XML 속성을 이용하여 지정할 수가 있습니다.

포커스가 이동되기전의 뷰에 적절한 속성을 추가하고 그 값으로 포커스를 받을 뷰의 id를 지정해야 합니다.





▶ 보통 버티컬 레이아웃에선 첫 버튼은 위쪽으로 움직일 수 없고, 두번째 버튼은 아래로 움직일 수 없는데, 'nextFocus...' 속성을 사용하여 지정했기 때문에 이제 위/아래로의 이동이 가능해 집니다.

만약, 기본적으로 포커스가 되지 않는 뷰에 포커스를 주고 싶다면, XML 레이아웃에서 ' android.focusable ' 속성에 ' true ' 로 추가하면 됩니다. 터치모드라면 ' android.focusableInTouchMode ' 속성으로 처리할 수 있습니다.

특정 뷰가 포커스를 가지게 하려면, requestFocus() 메소드를 호출합니다.



포커스를 얻거나 잃을 때 이벤트 처리를 하려면, 포커스 이벤트 처리를 위한 onFocusChange() 메소드를 써야 합니다.





반응형

댓글

Designed by JB FACTORY