Galleryに表示するItemが重なってしまう現象への対応

現象

Galleryに適当なViewを表示させようと思ったら、重なって表示されてしまった。
f:id:terurou:20110622170446p:image

コードの重要な部分だけ抜粋。

layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:background="@color/white"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <Gallery
    android:id="@+id/my_gallery"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>
</LinearLayout>
CustomAdapter
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Gallery.LayoutParams layout = new Gallery.LayoutParams(
                Gallery.LayoutParams.WRAP_CONTENT, Gallery.LayoutParams.WRAP_CONTENT);
        
        TextView text = new TextView(context);
        text.setLayoutParams(layout);
        text.setTextSize(20);
        text.setText("hoge\nfuga\npiyo");
        return text;
    }

解決策

Galleryのspacingを明示的に指定する。

  • layout.xmlで設定する場合は Galleryにandroid:spacing="0px" で設定できる
  • コードで設定する場合は Gallery.setSpacing(0) で設定できる

f:id:terurou:20110622170447p:image

雑感

てか、なんでspacingの初期値がマイナス値なのか理解できない。公式ドキュメントのチュートリアルでもspacing設定されてないんだけど、これほんとに動くの?