2013年3月12日 星期二

[Android] ListView listSelector和背景問題


在2.3以下和在Motorola手機上,使用
android:listSelector="@drawable/selector"
之後, 預期效果是選到item時,item變成想要的顏色,
實際上卻發生,連listview背景一起變色的效果。


解決方式

@drawable/selector
裡面使用的背景改為使用shape的drawable,
而不要使用@color。
http://stackoverflow.com/questions/10989225/android-listview-entire-list-getting-selected


http://stackoverflow.com/questions/2183447/listselector-applies-to-the-entire-list
嘗試這一則第一個回答裡的

android:drawSelectorOnTop="true"
在我的case裡沒有用。
(最後使用下面網址的第二個回答,比較多vote的那一則)



在motorola 2.3手機中,
當listview item數太少填不滿整個listview時,
背景會變預設灰背景。


解決方式

若listview可以不用填滿整個parent,則改為wrap_content;
若需要填滿整個parent,像是還有pull refresh(pull down/pull up)的效果,
則可以另外多設屬性

android:overScrollFooter="@null"
將多出的背景設為無。
(上面這種方式在motorola 2.3以上是有用的,以下未測試過)


設成

android:overScrollFooter="@android:color/transparent"
是無效的,


設成
android:overScrollFooter="背景顏色"
,會導致使最後一個divider消失,


就算使用了
android:footerDividersEnabled="true"
也不會出現。


android:footerDividersEnabled
在一般時候可以控制最後一條divider的顯現與否。
http://stackoverflow.com/questions/4961999/remove-bottom-divider-of-a-android-listview


http://stackoverflow.com/questions/6209114/list-view-footer-background-on-android-2-3-3
這邊第一則回答在2.1/2也可以使用,有機會來試試看。

沒有留言:

張貼留言