2010-08-03 114 views
1

我創建了一個收件箱活動,並且鏡像了Android自帶的默認郵件應用程序的某些功能。設置列表項背景顏色丟失突出顯示

在Mail中,未讀取的消息的背景顏色比列表中其餘項的顏色淺。我通過在我的Adapter的getView方法中設置調用setBackgroundResource來鏡像。 setBackgroundColor不做任何事情。

 if (!msgSum.getIsRead()) { 
      LinearLayout l = (LinearLayout) v.findViewById(R.id.inbox_background); 
      if (l != null) { 
       l.setBackgroundResource(R.color.inbox_unread); 
      } 
     } 
     else { 
      LinearLayout l = (LinearLayout) v.findViewById(R.id.inbox_background); 
      if (l != null) { 
       l.setBackgroundResource(R.color.inbox_read); 
      } 
     } 

問題是,項目然後失去突出顯示的能力。我的意思是,通常如果您在使用模擬器時滾動鼠標滾輪(或者如果您的Android設備具有某種滾動功能,則使用該功能),則列表項將變爲黃色,因爲它們具有焦點。

如何在不失去突出顯示列表項的能力的情況下完成我想要做的事情?

感謝您的幫助

回答

2

Per Romain Guy的建議是,我在YouTube上觀看了「Google I/O 2010 - ListView的世界」視頻。在分鐘31:43左右,他發佈瞭解決這個問題的代碼片段。你必須做一些修改,但是(我正在開發2.1)。首先,您必須在選擇器標籤中聲明xmlns:android參數。在你的Java代碼中,你必須調用convertView.setBackgroundResource(R.drawable.yourselector),而不是setBackground(它不再顯示存在)。

7

這是因爲突出顯示在列表項後面。您需要創建一個可繪製項目背景的狀態列表,將背景顏色設置爲在選定狀態下透明。如果你查看關於我在Google I/O 2010上給出的ListView的話題,你會得到一個如何做到這一點的例子。

+0

我來看看。我現在在YouTube上觀看您的「Google I/O 2010 - ListView世界」視頻。感謝您的方向 – Andrew 2010-08-03 19:40:19

+0

我確實認爲該視頻的31:43是我所需要的。那個XML文件應該在哪裏? RES /選擇/ myselector.xml? – Andrew 2010-08-03 20:31:19

+0

我擁有一切正常工作。感謝您的幫助,並花時間幫助Android社區。 – Andrew 2010-08-03 21:38:59