2011-03-19 47 views
2

我正在开发Android的ListView应用程序。我想要使​​用默认的ListView选择器,例如当您触摸某个项目时在Market中的选择器。不能使用默认的ListView选择器

我没有在我的ListView中获得一个亮点,哪里才能正确实现它?我已阅读了关于“触摸模式”的内容,尽管我无法实现它。

在此先感谢!

<ListView 
    android:id="@id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 

回答

1

您必须为每个行布局分配由选择器组成的背景,为每个状态分配不同的背景。假设您的项目排布置在一个XML定义的RelativeLayout的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="2dip" 
    android:background="@drawable/transparent_selector"> ... 

和transparent_selector在这里定义:是一个精心绘制形状属于一个状态表。

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_selected="true" android:drawable="@drawable/shape_7"/> 
     <item android:state_pressed="true" android:drawable="@drawable/shape_7" /> 
     <item android:state_pressed="false" android:drawable="@drawable/transparent_shape" /> 
    </selector> 

和形状在这里被定义:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="#FF4FDBD5" 
     android:endColor="#FF1AA6A1" 
     android:type="linear" 
     android:angle="90"/> 
</shape> 

或当你构建ListView的项目,你可以选择分配给“convertView”

欢呼的其他方式

+0

我想使用**默认**选择器。这不可能,因为我不想制作定制的? – Curtain 2011-03-19 14:57:25

+0

好吧,当你没有指定样式时,系统会设置默认选择器,但是这个选择器与市场应用中的选择器不同。 – Franco 2011-03-19 15:08:22

+0

我甚至没有得到默认选择器, – Curtain 2011-03-19 15:16:19

0

为了您的id属性,将其更改为android:id="@android:id/list。这是ListView的默认ID。

+0

这并没有解决选择器问题。 – Curtain 2011-03-19 14:27:09

0

试试这个选择器。它适用于我

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_window_focused="false" android:state_selected="true" android:drawable="@android:color/transparent" /> 
    <item android:state_selected="true" android:drawable="@android:color/transparent" /> 
    <item android:state_pressed="true" android:state_selected="false" android:drawable="@android:color/transparent" /> 
    <item android:state_selected="false" android:drawable="@drawable/list_item_back" /> 
</selector>