开发者

Can't use default ListView selector

I'm developing a ListView app for Android. I want to use the default ListView selector, for e开发者_StackOverflow中文版xample the one in Market when you touch an item.

I don't get a highlight in my ListView, where's the way to correctly implement it? I've read about the "Touch mode" although I can't get it to work.

Thanks in advance!

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


You have to assign to each row layout a background composed by a selector that assign a different background for each state. Suppose that your item row layout is a RelativeLayout defined in a xml:

<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">  ...

and transparent_selector is defined here: watch that carefully one drawable shape belongs to a single state.

<?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>

and a shape is defined here:

<?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>

or in the other way when you construct the ListView items you can assign the selector to the 'convertView'

cheers


For your id attribute, change it to android:id="@android:id/list. This is the default ID for the ListView.


Try this selector. It works for me

<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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜