ListView と TabWidget をかっこよくする

LDRoid いじりたかったけど、今日ははしょぼいカレンダーをいじった。


で、それとは関係ない、ListView と TabWidget をかっこよくする件。
まず ListView の区切り線を消す。
最初に試したのは android:dividerHeight を 0px にする方法。これはだめだった。
android:divider を "#00000000" にすれば良いらしい。


続いてアイテムの背景にグラデーションをかけたりする方法。
普通に各Viewのbackgroundにdrawableのやつを設定すると、クリックしたときのエフェクトが表示されなくなって、どこを選択しているのかわからなくなる。
この問題を解決するためにはまず、「何もしていないとき」「クリックされたとき」みたいな状態毎の設定を記述した xml ファイルを作る。
たとえば res/drawable/listview_item_gradient.xml みたいなファイルを作る。
その中には selector っていうタグを書いて、その子に item で 各状態ごとの drawable の定義をしていく。
そして、各Viewのbackgroundに @drawable/listview_item_gradient みたいな設定をする。
不思議ですな。


次に TabWidget。普通に使うとアイコンが巨大で、画面が狭くなりますな。IS01 だと勘弁してくださいってレベル。
やり方はいくつかあると思うけど、アイコンが要らなければ TabHost.TabSpec の setIndicator() で TextView でも入れればok。
TextView の background には上で書いたような状態ごとの drawable を設定したやつを指定すればばっちり。目指す見た目によっては TabWidget の setLeftStripDrawable() みたいなのを使わないとだめっぽい。


ああそうそう、drawable-nodpi に画像を入れておけばスケーリングされないらしい。常にpx単位の描画をしたい画像なんかはここに入れれば良いんですな。


くそう、はてなandroidxml のことを書こうとすると、いちいちid記法にひっかかるから厄介だな...。