2014-02-12 62 views
0

我對Android應用於ListView的Android樣式和選擇器有以下定義,但是當我點擊它時看不到灰色梯度效果。點擊它立即顯示藍色漸變。選擇器drawables

這個例子的作者寫道:

我們希望這個應用到我們的列表選擇。我們不想總是在同一個漸變中顯示 ,我們希望漸變在每次按下列表項時將其起始顏色從 灰色更改爲淺藍色。因爲我們現在有 有兩個不同的列表選擇器 - 一個用於 按下狀態的默認狀態 - 我們需要將它們保存在單獨的文件中。

有人可以解釋它應該如何正確顯示嗎?或者我錯過了什麼?
更一般的是,我應該期望在顯示屏上看到什麼?像列表項點擊中的從灰度漸變到藍色漸變的流暢轉換?

更新:這是作者是如何「看到」它,但是當我點擊項目看起來只像畫面的右側。我可以假設作者想要默認查看列表中的所有項目都是灰色的嗎?或者這個狀態不適用於列表視圖項目?

list_item_default.xml - >灰漸變

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <gradient 
     android:angle="0" 
     android:endColor="#FFFF" 
     android:startColor="#AFFF" /> 
    <stroke 
     android:width="1dip" 
     android:color="#CCC" /> 
    <corners android:radius="5px" /> 
</shape> 

list_item_pressed.xml - >藍色漸變

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <gradient 
     android:angle="0" 
     android:endColor="#FFFF" 
     android:startColor="#AA66CCFF" /> 
    <stroke 
     android:width="1dip" 
     android:color="#CCC" /> 
    <corners android:radius="5px" /> 
</shape> 

list_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/list_item_default" android:state_pressed="false"/> 
    <item android:drawable="@drawable/list_item_pressed" android:state_pressed="true"/> 
</selector> 

styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyMoviesTheme" parent="@android:style/Theme.Black"> 
    <item name="android:listViewStyle">@style/MyMoviesListView</item> 
    <item name="android:windowBackground">@drawable/film_bg</item> 
    </style> 

    <style name="MyMoviesTextAppearance" parent="@android:style/TextAppearance"> 
    <!--<item name="android:textStyle">bold</item>--> 
    </style> 

    <style name="MyMoviesListView" parent="@android:Widget.ListView"> 
    <item name="android:background">@color/list_background</item> 
    <item name="android:listSelector">@drawable/list_selector</item> 
    <item name="android:cacheColorHint">@android:color/transparent</item> 
    <item name="android:fastScrollEnabled">true</item> 
    <item name="android:footerDividersEnabled">false</item> 
    </style> 

</resources> 

回答

0

嘗試添加一句:

<item 
    android:state_enabled="true" 
    android:drawable="@drawable/list_item_default"/> 
    <item 
    android:state_enabled="true" 
    android:drawable="@drawable/list_item_pressed" 
    android:state_pressed="true"/> 
+0

不幸的是,它並沒有幫助。當我按下列表項目時,我不確定我應該在顯示屏上看到什麼。目前所有項目默認爲黑色,當我點擊其中一個時,它變成藍色漸變。我應該期待看到什麼? – ashur

+0

我試了一下,4.11可以很好地工作。我得到漸變效果。現在我測試它在2.3.7,4.0.Your代碼可以很好地工作。 –

+0

對我來說,我沒有看到灰色效果:P,我不知道我是否正確理解了選擇器,當我應該看到灰色漸變和藍色時?當我按列表中的元素時,它變成藍色,所以當它應該是灰色的?默認情況下,沒有選擇列表中的所有元素,並且所有元素都像我給出的圖像一樣黑。 – ashur