近期在專案中需要給ListView設定自定義選擇條顏色,一開始是用ListView的listSelector屬性,但出現了兩個問題。
1.一開始每個ListView上就出現了選擇條顏色
2.有多個ListView,但切換選擇時,上一個ListView的item位置上的選擇條顏色並沒有消失。
由於是通過按鍵來控制ListView上item的焦點與選擇切換,所以在此給出自己的解決方案,使自定義的選擇條顏色能跟隨按鍵的選擇在多個ListView之間自由切換。
一、未解決前
上圖:
二、通過xml設定的listSelector屬性效果
上圖:
三、解決方案
由於專案是通過按鍵來控制ListView的選擇,所以這裡的解決方案是針對按鍵的
1.建立一個View.OnfocusChangeListener()
private View.OnFocusChangeListener listener = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
v.requestFocus();
//這裡,使用者就可以隨意設定為自己想要的顏色或資源
((AbsListView)v).setSelector(android.R.color.holo_blue_bright);
}
else {
//當沒有被焦點選中時,再將其設定會透明色,不會覆蓋底層的背景
((AbsListView)v).setSelector(android.R.color.transparent);
}
}
};複製程式碼
2.給ListView設定焦點監聽事件。
private ListView lvSelectOne, lvSelectTwo;
lvSelectOne.setOnFocusChangeListener(listener);
lvSelectTwo.setOnFocusChangeListener(listener);複製程式碼
3.解決效果,上圖:
四、總結
到了這裡,自定義選擇條顏色並在多個ListView之間切換問題就解決了,這裡針對的是通過按鍵控制ListView的選擇情況。如果對本文有什麼意見和問題歡迎指正,謝謝觀看。