2017-01-30 56 views
0

我使用下面的代碼,但它不能正常工作:如果我選擇一個項目,背景會改變。但是,如果我只關注該項目而不選擇它,背景也會發生變化。爲什麼?如何突出顯示在ListView中按下的項目?

添加到我的列表視圖:

android:listSelector="@drawable/bg_key" 

@繪製/ bg_key

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    android:id="@+id/myselector" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_activated="false" 
     android:drawable="@color/activated_color" /> 

</selector> 

color.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="activated_color">#1d1d1d</color> 
</resources> 
+0

也許使用'pressed'和'focused'狀態? –

+0

@Rotwang我添加了state_pressed =「true」state_focused =「false」和view.setPressed(true);在onItemClick方法中,但它仍然不起作用 – xRobot

+0

'添加到我的列表視圖...'不是每個項目的選擇嗎? –

回答

0

您可以突出顯示/提供連鎖反應您使用f列出項目ollowing:

在繪製創建一個選擇item_ripple.xml:

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

    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="@color/activated_color"></solid> 
     </shape> 
    </item> 

    <item > 
     <shape> 
      <solid android:color="@android:color/transparent"></solid> 
     </shape> 
    </item> 

</selector> 

在繪製-V21創建一個選擇item_ripple.xml

<?xml version="1.0" encoding="utf-8"?> 
<ripple 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@color/activated_color"> 

    <item 
     android:id="@android:id/mask" 
     android:drawable="@android:color/white" /> 
</ripple> 

你需要把這些選擇添加爲背景您的物品佈局:

android:background="@drawable/item_ripple" 
+0

什麼是可繪製的v21? – xRobot

+0

在res文件夾中創建一個新目錄並將其命名爲drawable-v21。這表示當前API版本的操作系統是否爲<= 21,請考慮使用此文件夾中的資源(如果不存在),默認情況下使用可繪製文件夾下的資源。 –

0

您可以使用狀態在你選擇文件

/drawable/list_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:drawable="@android:color/holo_red_light" android:state_pressed="true"/> 

</selector> 

然後設置按照您的ListView屬性

android:listSelector="@drawable/list_selector" 
相關問題