2012-10-25 56 views
3

我有我的自定义listselector这样的:ListSelector在列表视图不工作

<?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_hover"></item> 
    <item 
     android:state_focused="true" 
     android:drawable="@drawable/bg_list"></item> 
</selector> 

和我的列表视图:

<?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="match_parent" 
    android:orientation="vertical" 
    android:background="@drawable/bg_dasar" > 
    <TextView 
       android:id="@+id/textView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="StoreCategory" 
       android:textSize="15sp" 
       android:paddingLeft="10dip" 
       android:paddingTop="10dip" 
       android:paddingRight="10dip" 
       android:textColor="@color/textcolor"/> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dip" 
     android:listSelector="@drawable/listselector"> 
    </ListView> 

我的问题是,当我不上的ListView点击, listview项目不使用集中状态背景(@drawable/bg_list)...

任何可以帮助我吗?

回答

0

在xml中设置android:focusable =“true”之后,您是否尝试过在代码中的listView上调用“requestFocus()”?在查看文档中:

“调用此方法可尝试将焦点放在特定的视图或其某个后代上,如果焦点不可聚焦(isFocusable()返回false),则视图实际上不会焦点,或者if它是可以聚焦的,并且当设备处于触摸模式时,它不能在触摸模式(isFocusableInTouchMode())下聚焦。另请参见focusSearch(int),这是您打电话表示您有焦点并且您希望父母看起来对于下一个,这相当于使用参数FOCUS_DOWN和null调用requestFocus(int,Rect)。“

+0

仍然没有工作对我来说,, :) – ZeeDroid

0

看起来您的选择器xml目前正在说您在单击某个项目时使用bg_list_hover,而在您关注某个项目(例如使用轨迹球)时使用bg_list。

如果你想使用自定义绘制在默认情况下,当产品没有被点击也不集中,你需要添加一个条目:

我会用这样的:

<?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_pressed"></item> 
    <item 
     android:state_focused="true" 
     android:drawable="@drawable/bg_list_focused"></item> 
    <item 
     android:drawable="@drawable/bg_list"></item> 
</selector> 
+0

我以前尝试,但该项目没有点击,也没有聚焦时,仍然没有背景,,, :) – ZeeDroid

3

我已经解决了我的问题,通过阅读一些参考.. 我listselector应该是这样的:

<?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_hover" /> 
<item 
    android:drawable="@drawable/bg_list" /> 
</selector> 

我的列表视图布局:

<?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="match_parent" 
    android:orientation="vertical" 
    android:background="@drawable/bg_dasar" > 
    <TextView 
       android:id="@+id/textView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="StoreCategory" 
       android:textSize="15sp" 
       android:paddingLeft="10dip" 
       android:paddingTop="10dip" 
       android:paddingRight="10dip" 
       android:textColor="@color/textcolor"/> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dip" 
     **android:listSelector="@android:color/transparent"**> 
    </ListView> 

</LinearLayout> 

我也加入我的列表选择进入我的列表项的背景:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="55dip" 
    android:orientation="horizontal" 
    android:padding="15dip" 
    android:gravity="center_vertical" 
    **android:background="@drawable/listselector"**> 

    <ImageView 
     android:id="@+id/imageViewlogo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="10dip" /> 

    <TextView 
     android:id="@+id/textViewcategory" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:textColor="@color/textcolor" 
     android:textSize="15sp"/> 

</LinearLayout> 

三江源周杰伦& danwilkie的回答我的问题.. :))

+0

谢谢!你真的帮助我。问候。 –

5

对于那些仍然需要它:关键是将listSelector设置为列表项的背景!

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#819FF7" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@+id/mainList" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:cacheColorHint="#819FF7" 
     /> 

</LinearLayout> 

list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/lineItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_selector"> 

    <ImageView android:id="@+id/imageView" 
     android:layout_width="96dp" 
     android:layout_height="64dp" 
     android:layout_centerVertical="true" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="10dp" /> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_toRightOf="@+id/imageView" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dip" 
     android:layout_centerVertical="true" 
     android:textSize="18sp" 
     android:textColor="#ff000000" 
     android:layout_width="wrap_content" 
     /> 
    <Button 
     android:id="@+id/button" 
     android:gravity="center" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="10dp" 
     android:layout_alignParentRight="true" 
     android:focusable="false" 
     android:text="Delete" /> 

</RelativeLayout> 
+0

是的,这是一个常见的解决方案。但是,该方法要求您在每个ListView的列表项上设置背景 - 它不能以更通用的方式应用,例如作为主题的一部分。 – spaaarky21