Android ListView滾動Item背景為黑色解決辦法

來源:互聯網
上載者:User

 

在別的地方看到的,轉過來作為記錄!!

在Android中,ListView是最常用的一個控制項,在做UI設計的時候,很多人希望能夠改變一下它的背景,使他能夠符合整體的UI設計,改變背景背很簡單只需要準備一張圖片然後指定屬性 android:background="@drawable/bg",不過不要高興地太早,當你這麼做以後,發現背景是變了,但是當你拖動,或者點擊list空白位置的時候發現ListItem都變成黑色的了,破壞了整體效果,如所示:

 

這是為什麼呢?

 

這個要從Listview的效果說起,預設的ListItem背景是透明的,而ListView的背景是固定不變的,所以在捲軸滾動的過程中如果即時地去將當前每個Item的顯示內容跟背景進行混合運算,所以android系統為了最佳化這個過程用,就使用了一個叫做android:cacheColorHint的屬性,在黑色主題下預設的顏色值是#191919,所以就出現了剛才的畫面,有一半是黑色的.

 

那怎麼辦呢?

 

如果你只是換背景的顏色的話,可以直接指定android:cacheColorHint為你所要的顏色,如果你是用圖片做背景的話,那也只要將android:cacheColorHint指定為透明(#00000000)就可以了,當然為了美化是要犧牲一些效率的。最後就不回出現上面所說的你不想要的結果了!
自訂ListView行間的分割線

在Android平台中系統控制項提供了靈活的自訂選項,所有基於ListView或者說AbsListView實現的widget控制項均可以通過下面的方法設定行間距的分割線,分割線可以自訂色彩、或圖片。

在ListView中我們使用屬性 android:divider="#FF0000" 定義分隔字元為紅色,當然這裡值可以指向一個drawable圖片對象,如果使用了圖片可能高度大於系統預設的像素,可以自己設定高度比如6個像素 android:dividerHeight="6px" ,Android開發網提示當然在Java中ListView也有相關方法可以設定。

 

1)點擊Item時無背景顏色變化
在xml檔案中的ListView控制項中加入如下屬性:
android:listSelector="@drawable/timer_list_selector"
在drawable中定義timer_list_selector的屬性值
timer_list_selector.xml中定義如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@android:color/transparent" />
</selector>
在values檔案夾下的colors.xml中定義transparent如下:
<color name="transparent">#50000000</color>

2)設定Item之間無間隙
在xml檔案中ListView控制項中加入如下屬性:
android:divider="#00000000"
或者在javaCode中如下定義:
listView.setDividerHeight(0);

3)自訂的BaseAdapter中調用notifyDataSetChanged()方法會重新調用BaseAdapter的getView()方法。

用心的朋友應該會發現,listview中在設定了背景之後。會有些問題。

 

1.、listview在拖動的時候背景圖片消失變成黑色背景。等到拖動完畢我們自己的背景圖片才顯示出來。

 

2 、listview的上邊和下邊有黑色的陰影。

 

3、lsitview的每一項之間需要設定一個圖片做為間隔。

 

針對以上問題 在listview的xml檔案中設定一下語句。

 

問題1 有如下代碼結解決 android:scrollingCache="false"

 

問題2 用如下代碼解決:android:fadingEdge="none" 
問題3 用如下代碼解決: android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一個圖片資源

 

 

 

總體如下

 

<ListView
android:id="@+id/myListView01"
android:layout_width="fill_parent"
android:layout_height="287dip"
android:fadingEdge="none" 
android:divider="@drawable/list_driver"
android:scrollingCache="false"
android:background="@drawable/list">
</ListView>

註明:QQ技術交流群:108614806   感興趣的加一下。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.