2012-11-04 158 views
7

我想以編程方式在我的ListView適配器中設置自定義背景顏色,但我想保留Android的默認Listview選擇器樣式。更改ListView項目背景顏色,但保持默認的選擇器樣式?

我使用我的項目視圖的「SetBacgroundResource」方法設置背景顏色。

我使用的是Android 4.0,我嘗試了這個博客http://daniel-codes.blogspot.co.nz/2010/07/how-to-change-listview-rows-background.html的示例,但是使用此示例的選擇器顯示了未選中的背景色。

如何在Android 4.0 ICS中實現此目標?

編輯:這是我用於列表項目背景drawable的資源。

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_window_focused="false" android:state_selected="true" android:drawable="@android:color/transparent" /> 
    <item android:state_selected="true" android:drawable="@android:color/transparent" /> 
    <item android:state_pressed="true" android:state_selected="false" android:drawable="@android:color/transparent" /> 
    <item android:state_selected="false" android:drawable="@color/list_item_first" /> 
</selector> 

,我使用設置此背景繪製的代碼是我adatapter的GetView方法中。該代碼是:

convertView.setBackgroundResrouce(R.drawable.list_item_dark); 
+0

請發表您正在使用的資源。 – CommonsWare

+0

我已將資源發佈到我的問題。 – startupsmith

回答

3

試試這個:在你的行佈局中設置的背景屬性

android:background="@drawable/your_selector" 

和你listView設置

android:listSelector="@drawable/your_selector" 
+0

這個問題是,我在代碼中旋轉背景可繪畫,所以背景可繪製將不會相同的所有行,因此設置它在列表視圖級別將無法正常工作... – startupsmith

+0

完美適合我。我有一個自定義ListView項目的背景爲白色,並按下我想將其更改爲藍色。 –

3

嘗試編寫自定義適配器並設置rowView BackgroundColor那樣(如果位置奇數黑色,甚至紅色)。 你也可以發送彩色列表,適配器和設置不同的顏色每rowView

public View getView(int position, View convertView, ViewGroup parent) { 
      View rowView = convertView; 
     enter code here 

      if(rowView == null) 
      { 
       if((position % 2)==1){ 
       rowView.setBackgroundColor(Color.BLACK) 
        //colorList :setBackgroundColor(colorList.get(position)) 
       } 
       else{ 
        rowView.setBackgroundColor(Color.RED) 
       } 
      }   
      return rowView; 
     } 
+0

這些代碼不能成功時,我應用一些佈局充氣在convertView ..所以請建議我如何成功這些條件.... !!! –

+0

你能分享你的代碼嗎? – KEYSAN

+0

好吧,我理解我的問題......! –

4

你嘗試到您的ListView的財產android:drawSelectorOnTop設置爲true?
您可以爲物品設置背景,並在按下時查看突出顯示的物品。

+0

嗨是的,我已經試過這個......它確實有效,但它不完全是我以後的效果。我不希望高亮顯示在列表項中的所有文本和圖像上。 – startupsmith

1

嘗試這種風格應用到您的ListView:

<style name="List"> 
    <item name="android:layout_width">fill_parent</item> 
    <item name="android:layout_height">fill_parent</item> 
    <item name="android:background">#FFFFFF</item> 
    <item name="android:dividerHeight">1dp</item> 
    <item name="android:divider">#CCCCCC</item> 
    <item name="android:cacheColorHint">#FFFFFF</item> 
    <item name="android:listSelector">#00000000</item> 
</style> 

而在你的XML佈局這樣的:

<ListView 
    android:id="@+id/listView" 
    style="@style/List" 
    android:paddingTop="1dp"/> 
相關問題