關於設置選擇條顏色多個ListView之間切換問題解決方案


近期在項目中需要給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的選擇情況。如果對本文有什麼意見和問題歡迎指正,如果覺得本文可以,請幫忙點個贊,謝謝觀看。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章