Android2010. 8. 9. 11:30

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>
위의 소스를 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를 호출하시면 쉽게 여백을 제거 할수 있습니다.

Posted by 위푸