ListViewのスクロール行を透過にする
GoogleIO 2010のスライドを見ていて、
The world of ListView Android - Romain Guy, Adam Powell
この中で、
My list turns black?!
・Gotcha
- Very useful optimization
- When scrolling views are cached in bitmaps
- Opaque bitmaps to avoid blending・ Solution
- android:cacheColorHint=”#00000000”
- android:cacheColorHint=”@color/myBackgroundColor”
とあるが、読んでいる時はこれがどういうものか全く意味が解らなかった。
解らない時は実際にやってみるに限る。
- 実施前
- 実施後 (ListViewのCacheColorHintを"#00000000"、parentのLinearLayouのBackgroundを"#808A2BE2"に設定)
単に背景色を紫色にするだけだとスクロールした際にListViewの行の背景色は元に(黒く)戻ってしまうが、CacheColorHintはListViewのスクロール行における背景色を指示するらしく、これを"#00〜"つまり透明にするとコンテナであるLinearLayoutに設定した背景色がスクロール中もそのまま透けて見えるということらしい。
AndroidのViewは最近のGUIツールキットらしく、色の属性に透過ビットが扱えるお陰でGUIの表現が随分と広がるので楽しい。