2014-12-30 36 views
0

所以,我有一個佈局(作爲ListView中的一行),我有listSelector。此listSelector工作正常,直到我添加到佈局的背景。我想這個背景作爲開始的背景(並且會隨着listSelector而改變)。但是,一旦我添加背景,listSelector不再起作用,並且我的佈局在按下時不會改變顏色(如預期的那樣)。爲什麼是這樣?謝謝。在佈局上設置背景覆蓋listSelector

的佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/main_layout" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="@drawable/listview_background" 
android:listSelector="@drawable/listview_selector" 
android:minHeight="140dip" 
android:paddingLeft="5dp" 
android:paddingRight="5dp" > 

<ImageView 
    android:id="@+id/imgIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="2dip" 
    android:layout_toRightOf="@id/tvTime" 
    android:adjustViewBounds="true" 
    android:maxWidth="100dip" 
    android:padding="4dip" 
    android:scaleType="centerInside" 
    android:src="@drawable/ic_launcher" /> 

</RelativeLayout> 

背景:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
      <!-- The border color --> 
      <solid android:color="#CCCCCC" /> 
     </shape> 
    </item> 

    <item android:left="5dp" android:right="5dp" > 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
      <!-- The fill color--> 
      <solid android:color="#FFFFFF" /> 
     </shape> 
    </item> 

</layer-list> 

清單及選擇:

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

    <item android:drawable="@drawable/listview_bg_hover" android:state_pressed="true"/> 
    <item android:drawable="@drawable/listview_background" android:state_focused="true"/> 
    <item android:drawable="@drawable/listview_background"/> 

</selector> 

回答

0

其實,listSelector仍然是 「作品」。但是,問題在於項目視圖在之上繪製了。因此,如果它具有不透明的背景,那麼選擇器完全隱藏。

這有兩種可能的解決方案:

  • 您可以使用drawSelectorOnTop,這將繪製選擇對你的看法之上。然而,這隻有在選擇器有點透明時纔有效(默認不是)。
  • 使用StateListDrawable作爲背景透明選中(因此,允許顯示選擇器)。

檢查羅曼蓋伊的世界的ListView談話,他提到了這個具體包括: