2011年3月31日木曜日

Android 区切り線を引く

複数リストを表示する」でinflateとaddViewを繰り返してリストを表示したのだが、見た目がイマイチ。色々とダサい理由はあるのだろうけど、やっぱり大きいのは区切り線かなぁと思うので、そこを直す。

調べて見たところdrawableのシステムリソースにdividerってのがある。下記4種。
  • divider_horizontal_bright
  • divider_horizontal_dark
  • divider_horizontal_dim_dark
  • divider_horizontal_textfield
これを使って区切り線を引く。方法は力技でまたinflateとaddView。先日の内側のfor文を下記変える。
            for (int j = 0; j < i + 1; j++) {
                if (j > 0) {
                    ImageView divider = (ImageView) View.inflate(this, R.layout.line, null);
                    header.addView(divider);
                }
                TextView row = (TextView) View.inflate(this, R.layout.row, null);
                row.setText("項目" + j);
                header.addView(row);
            }

line.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:src="@android:drawable/divider_horizontal_bright"
    android:scaleType="fitXY"
/>


少しはリストっぽく見えるようになったかな。でも、フォーカスされても色が変わらずわかりにくいなどあるので、ListView使わずに複数リストを表示しましたと言えるレベルではない。