1

我有這個ListFragment,這我在我的活動這種方式呼籲所有項目:ListFragment選擇器選擇

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setTitle(getString(R.string.something)); 

     if (savedInstanceState == null) { 
      final FragmentManager fm = getSupportFragmentManager(); 
      final FragmentTransaction ft = fm.beginTransaction(); 
      final Fragment f = CustomerListFragment.newInstance(); 
      ft.add(android.R.id.content, f, FRAG_TAG_CUSTOMER_LIST); 
      ft.commit(); 
     } 

    } 

在我的片段我已經設置好的一個選擇:

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

在我的清單我已經設置好的它的風格:

<activity android:name=".ui.CustomerListActivity" android:clearTaskOnLaunch="true" android:theme="@style/Theme.AppList"> 

主題定義如下:

<style name="Theme.AppList"> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowBackground">@color/window_background</item> 
     <item name="android:listViewStyle">@style/AppListView</item> 
    </style> 

    <style name="AppListView" parent="@android:style/Widget.ListView.White"> 
     <item name="android:dividerHeight">4dp</item> 
     <item name="android:listSelector">@color/selector_color</item> 
     <item name="android:ellipsize">marquee</item> 
     <item name="android:cacheColorHint">@color/list_item</item> 
     <item name="android:divider">@android:color/transparent</item> 
    </style> 

而且顏色:

<color name="list_item">@android:color/white</color> 
    <color name="selector_color">#ffba00</color> 

但是,每當應用程序運行時,它看起來很好,直到我長按某個項目或嘗試拖動。然後,所有的元素都被選擇,看起來像這樣,而不是隻選擇一個元素。

所以現在的問題是:如何讓我的列表中只選擇1個元素,而不是全部。

enter image description here

任何幫助將非常感激。

回答

0

很好的解決方案,這是爲了實現一個選擇的XML,在這裏我添加列表項的所有狀態:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:state_pressed="true" android:drawable="@drawable/bg_list_item_selected"></item> <!-- pressed -->  
<item android:state_focused="true" android:drawable="@drawable/bg_list_item_selected"/>   <!-- focused --> 
<item android:drawable="@drawable/bg_list_item"/>  <!-- default --> 
</selector> 

選擇器抽拉狀態,其中9個補丁圖像。 然後在那裏我定義該行的XML我設置好的佈局化背景的選擇如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:orientation="vertical" 
    android:paddingLeft="@dimen/space_screen_borders" 
    android:paddingRight="@dimen/space_screen_borders" 
    android:background="@drawable/custom_selector" 
    > 
    ... your layout items 
</LinearLayout> 

清單活動如下:

<activity android:name=".ui.CustomerListActivity" android:clearTaskOnLaunch="true" android:theme="@style/Theme.AppList"> 

最後的主題如下:

<style name="Theme.AppList"> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowBackground">@color/window_background</item> 
    <item name="android:listViewStyle">@style/AppListView</item> 
</style> 
<style name="AppListView" parent="@android:style/Widget.ListView.White"> 
    <item name="android:dividerHeight">4dp</item> 
    <!--item name="android:background">@color/</item--> 
    <item name="android:cacheColorHint">@color/list_item</item> 
    <item name="android:divider">@android:color/transparent</item> 
</style> 

然後listview會顯示爲白色背景的活動元素和藍色背景,以及e之間的4dp透明空間lements。

0

你想使listSelector @android:color/transparent和各行視圖的選擇設置爲@color/selector_color

+0

也許我這樣做不對,讓我更好地想問:如何設置各行視圖的選擇? – Raykud 2012-04-16 21:42:11