Android使用选择器列表视图边框颜色

时间:2013-11-18 16:00:55

标签: android xml listview

我完全正常工作,虽然我需要将代码更改为listSelector,现在我不知道怎么做才能保持左边的边框。

在所有listview行中,我有一个边框: border.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
            <solid android:color="#E30E0E"/>
        </shape>
    </item>
    <item android:left="5dip">
        <shape android:shape="rectangle">
            <solid android:color="#E3E3E3"/>
        </shape>
    </item>
</layer-list>

这会设置每一行的左侧,一个带颜色的边框。但是,正如您所看到的,它具有背景的默认纯色。使用此代码,每当用户点击列表视图的项目时,他都不知道他是否已经点击过,因为它具有不会改变onState()的纯色。

为了使其正常工作,我需要创建一个listSelector,其中状态选择加上状态按下背景渐变。

selector.xml

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

    <item android:state_pressed="true"
        android:drawable="@drawable/listview_gradient_bg_hover" />

    <item android:state_selected="true"
     android:state_pressed="false"
        android:drawable="@drawable/listview_gradient_bg_hover" />
</selector>

所以,我的问题是:有任何方式可以链接&#34;这两段不同的代码?

1 个答案:

答案 0 :(得分:1)

尝试把这个

<item android:left="5dip">
    <shape android:shape="rectangle">
        <solid android:color="#E3E3E3"/>
    </shape>
</item>

进入listview_gradient_bg和listview_gradient_bg_hover drawables,然后将选择器链接到适配器中的每一行。