GridView에 View를 생성하여 넣으면 GridView가 보여질때 상하좌우에 여백이 있는 것을 보실수 있습니다.
이렇게 GridView의 background에 white color를 지정하여 보면 white color의 여백이 남는 것을 볼수 있습니다.
이 여백을 없에기 위해 margin이나 padding을 아무리 주어도 없어지지 않는데요 여백을 없에기 위해서 몇일을 찾아 본 결과 list selector에 padding이 지정되어 있어서 여백이 생기게 된다는 것을 알게 되었습니다.
혹시나 저 같이 GridView에 여백을 없에기위해 고민하시는 분을위해 여백을 없에는 방법을 공유합니다.
방법은 GridView에 listSelector에 있습니다.
GridView는 AbsListVIew를 상속받게 되어 있는데요 이 AbsListView에 기본으로 지정되어 있는 listSeletor에 padding이 들어가 있어서 GridView에 여백이 생기게 됩니다.
GridView에 여백을 없에기 위해서는 GridView에 listSelector속성에 padding을 제거한 selector를 지정하면 됩니다.
padding을 제거하기 위한 selector xml의 소스 입니다.
위의 소스를 list_selector.xml로 저장하여 drawable 폴더에 넣으신 후
GridVIew의 listSelector 속성에 위에 XML을 지정하시면 됩니다.
http://developer.android.com/guide/topics/resources/drawable-resource.html 의 XMLBitmap 부분을 참조하시면 selector를 xml로 설정하는 것에 대한 설명이 나와있습니다.
GridView에 listSelcotr속성을 적용한 소스 입니다.
<GridView android:id="@+id/anim_grid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:stretchMode="columnWidth" android:listSelector="@drawable/list_selector" android:background="#ffff" /> |
이렇게 적용하여서 실제로 보게되면 여백이 없어지는 것을 확인할 수 있습니다.
안드로이드의 가장 좋은 공부방법은 풀소스 분석과 Developer 사이트의 Guide를 보는것과 Reference를 꾸준히 익히는 것이라고 생각되네요
-----------------------------------------------------------------------------------------------------------------
추가로 안드로이드 api를 직접 호출하여 여백을 없에는 방법입니다. (진작 올렸어야되었는데 많이 늦었네요.. ㅜ.ㅜ)
gridView.setSelector(new StateListDrawable()); |
GridView의 setSelector를 호출하시면 쉽게 여백을 제거 할수 있습니다.