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의 소스 입니다.
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:variablePadding="false">
</selector> |
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를 호출하시면 쉽게 여백을 제거 할수 있습니다.