2013-05-30 114 views
0

我有一個Android ListView和選擇顏色的問題。所以我有一個ListView下的一個微調和這個ListView我做了一個ArrayAdapter這是設置一個backgroundcolor取決於項目。 (這在截圖中沒有看到)Android Listview選擇顏色與自定義背景

現在,當我點擊一個項目時,沒有選擇顏色可見。爲此,我提出這樣的選擇:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@color/SelectionColor" android:state_pressed="true" android:state_focused="true"/> </selector> 

,並添加到列表視圖:

android:listSelector="@drawable/item_selector" 
android:drawSelectorOnTop="true" 

我加drawSelectorOnTop因爲沒有這種選擇的顏色是不可見的。

現在的問題是,在安卓4.0,它看起來是這樣的: click here

,並在安卓2.3.3這樣的: click here

那麼,怎樣才能設置我的選擇的顏色,它的外觀兩個版本都一樣。最好能讓文字仍然可見。

編輯: 感謝Basim。這解決了它看起來不同的問題,取決於Android版本。但是,如果我在listview中有drawSelectorOnTop條目,或者如果我沒有這個條目,選擇不可見,文本仍然不可見。

+0

安置自己的完整列表視圖的佈局,並在適當的列表項的佈局。 – tbm

+0

如果仍然相關,只需使用具有一定透明度的顏色即可。而不是使用#fefeff使用#4Cfefeff – nheimann1

回答

6

試試這個選擇,

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- Selector style for listrow --> 
<item 
android:state_selected="false" 
    android:state_pressed="false" 
    android:drawable="@drawable/normal_shape" /> 
<item android:state_pressed="true" 
    android:drawable="@drawable/gradient_bg_hover" /> 
<item android:state_selected="true" 
android:state_pressed="false" 
    android:drawable="@drawable/gradient_bg_hover" /> 
</selector> 

normal_shape.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <gradient 
     android:angle="270" 
     android:endColor="#fefeff" 
     android:startColor="#d5dbe7" /> 

    <stroke 
     android:width="1dp" 
     android:color="#acd9dd" /> 

</shape> 

gradient_bg_hover.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <!-- Gradient BgColor for listrow Selected --> 
    <gradient 
     android:startColor="#d9dd00" 
     android:endColor="#e6ea02" 
     android:angle="270" /> 


</shape> 
+0

謝謝,這解決了問題的前半部分! – Birdy