android:foreground 는 android:background 와 반대되는 개념이다.
android:foreground 의 경우는 main contents 를 가리면 안 되기 때문에 보통 alpha 를 먹인 이미지나 색상 등을 사용하며,
어떤 item 을 선택했을 때 background selector 와 같은 효과를 볼 수 있지만, 앞쪽(컨텐츠보다 z 축으로 우리 눈쪽에 가깝게)에서 press 된 상태를 보기 위해 보통 사용된다.
말인 즉슨, 만약 어떤 버튼을 클릭하는데, 그 버튼의 컨텐츠가 버튼의 거의 전부를 cover 하고 있다면,
selector를 background 로 설정했을 때, 해당 버튼을 press 하면 해당 버튼이 눌렸는지 판단하기 어렵다.
이 경우 selector 를 foreground 로 설정하면, 해당 contents 위에서 press image 혹은 color 가 보이기 때문에
선택이 되었다는 것을 직관적으로 알 수 있다.
( 물론 위에서 설명했듯 alpha 가 들어간 녀석이여야 contents 내용을 완전 가리지 않겠지. )
단, 이 foreground 속성은 이상하게도 FrameLayout 에만 적용이 된다.
가장 많이 사용하는 LinearLayout 에는 적용이 안 된다.
하지만, 역시나 누군가가 foreground 를 지원하는 ForegroundLinearLayout 을 만들어줬다.
https://gist.github.com/chrisbanes/9091754
RelativeLayout 에 대해서는 어떻게 하냐고?
https://gist.github.com/shakalaca/6199283
요 녀석이 있다.
이 소스를 분석하면 Custom Layout 에도 충분히 foreground 속성을 적용할 수 있다.
소스 분석 후 핵심을 나중에 따로 포스팅하도록 하겠다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] support v4 에 추가된 SwipeRefreshLayout. (0) | 2014.04.15 |
---|---|
[android] ellipsize="marquee" not working (0) | 2014.04.15 |
[JNI] undefined reference to `__android_log_print' (0) | 2014.04.14 |
[Android] Custom View 를 사용할 때 수동 inflate, merge, attribute setting 피하는 방법. (0) | 2014.04.12 |
[JNI] undefined reference to AndroidBitmap (0) | 2014.04.12 |
댓글