2013-04-04 56 views
8

我遵循官方Android站點tutorial on creating contextual action menus。使用下面的代碼,當我長按ListView中的一個項目時,確實被選中,但它不直觀地表明它已被選中。我使用Holo Light主題,我期望ListView中每個選定項目的背景顏色都變爲藍色陰影。在上下文動作模式中選擇時,ListView項目不會變爲可見的「突出顯示」

這是正常的行爲嗎?

我試圖測試listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);甚至沒有一個行將突出。

使用listView.setSelector(android.R.color.holo_blue_light);確實出現了強調這是最後一次選擇的行,但它並不突出其選擇其他行。

我做錯了什麼,還是我需要手動進行背景更改?如果是這樣,怎麼樣?

我也曾嘗試listView.setSelector(android.R.drawable.list_selector_background);這是一個包含不同狀態的項目一個真正的選擇。不幸的是,它仍然只適用於最近選擇的ListView項目。

public class MyActivity extends ListActivity { 

    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     // The list is generated here 

     ListView listView = getListView(); 
     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 

     listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { 
      // implements empty methods 
     } 
    } 
} 

謝謝!

+0

沒有ü設法進入上下文動作看法呢?我一直在試圖做同樣的事情,但沒有運氣。試圖達到與Jelly Bean鬧鐘ListView效果相同的效果,即在長按項目時進入刪除模式。 – 2013-05-30 10:24:44

回答

2

在我看來,它應該是可能的方式來描述,但不幸的是它沒有。

我迄今發現的是,你必須使用它描述了這樣的背景應該是在項目的「國家」被「激活」就像一個XML資源。

在 'RES /繪製/' 目錄下創建一個名爲 'list_item_background_activated.xml' 文件。

在它定義類型選擇的根元素:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
<item 
    android:state_activated="true" 
    android:drawable="@android:color/darker_gray" /> 

</selector> 

現在你應該修改相關的資源(定義你的ListItem的樣子資源)來引用該繪製:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_item_background_activated" > 
    ... 
</RelativeLayout> 
1

我剛剛實施了上下文操作模式,並且遇到了您擁有的相同問題。我也認爲默認行爲是每個選定的行都會以某種方式突出顯示,但不會。

,我得到預期的效果,最簡單的方法是改變我是用我的ListActivity列表項資源。

我使用的是ArrayAdapter所以我選擇在適配器的構造是由:

new ArrayAdapter<Exercise>(context, android.R.layout.simple_list_item_1); 

最後一個參數是佈局資源的ID文件適配器將用於instanciating新觀點(列表項)在列表視圖中。

我選擇了我認爲最基本的一個。通過將其更改爲:

new ArrayAdapter<Exercise>(context, android.R.layout.simple_list_item_activated_1); 

我得到了預期的效果,上下文操作模式中選擇的行現在保持突出顯示。

還有一些在android.R.layout中定義的其他資源ID,您可以從中獲得類似但不同的結果:http://developer.android.com/reference/android/R.layout.html,simple_list_item_activated_1只是爲我做的。

不知道

// The list is generated here 

隱藏的適配器,如果是這樣的數組適配器,但如果這樣做,這應該幫助。

否則我想你可以在另一個地方使用預定義的資源或採取稍長的方式,並確定選擇作爲Brabbeldas表明

相關問題