1

我有一個問題:我有一個ListView與MULTI_CHOICE監聽器打開ContextualActionBar。對於此列表中的每個項目,我已經在根佈局上設置了一個後臺。這是XML:Android的CAB列表視圖state_selected和state_pressed

<item android:drawable="@color/light_blue_alpha" 
     android:state_activated="true"/> 

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

<item android:drawable="@drawable/card_background"/> 

在這種情況下,默認背景是卡片佈局(基本上是白色)。當按下該項目時,背景爲全淺藍色。當激活(通過CAB選擇)時,背景爲0.5阿爾法的淺藍色。

這就是發生了什麼事情: 我開始CAB。如果我在CAB期間選擇了新項目,則該項目將其背景更改爲light_blue(按下時)。當我鬆開手指時,它會更改爲默認背景card_background。幾毫秒後,它被激活,然後更改爲light_blue_alpha

所以基本上我得到了這種閃爍的藍白藍。我想要實現的是「刪除」白色背景交易。例如,我看到Gmail應用正是我想要做的事情。

這怎麼能實現呢?謝謝!!

編輯: 我試着將所有移動到根listSelector。這是選擇器:

<item android:state_pressed="true" android:drawable="@color/light_blue"/> 
<item android:state_activated="true" android:drawable="@color/light_blue_alpha"/> 
<item android:drawable="@android:color/transparent"/> 

我還將drawOnTop設置爲true,並且按下的背景被正確應用。但是state_activated不行!當我啓動CAB時,該項目返回到其默認背景。爲什麼不採取state_activated背景?

+0

你可以附加'正在發生什麼'和'你想達到什麼':) – Gattsu 2014-10-01 12:51:44

+0

是的。但我完全可以做到這一點。問題是,當我鬆開物品上的手指時,物品會回到其默認背景,並在幾毫秒被激活後進入激活的背景。我想要禁用或隱藏手指釋放效果。我希望項目從按下的背景去激活的背景DIRECTLY – edoardotognoni 2014-10-01 12:59:37

回答

0

將適配器中的一個變量命名爲selected_position,在此變量中分配選定的位置值。在獲取視圖方法適配器

通話notifydatasetchanged方法把條件像

如果(selected_position ==位置) { 改變列表項的回地面顏色 } 其他 { 組默認背景顏色 }

希望這會有所幫助

+0

毫米..我真的需要把手放在Java代碼?如果我沒有找到任何解決方案,我會用這個解決方案 – edoardotognoni 2014-10-01 13:14:22