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