选中Android listviewItem边框颜色

时间:2014-02-25 21:15:15

标签: android listview android-selector

我将要有一个包含一些项目的列表视图,当我在列表视图中选择一行时,它应该有一个边框。那我怎么能达到这样的目的呢 我试试这个。但它只有在我按行

时才有效
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" ><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
            <stroke android:width="4dp" android:color="#87CEFA" />
            <solid android:width="1dp" android:color="@color/greylight" />
            <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" />

            <corners android:radius="5px" />
        </shape></item>
    <item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
            <solid android:width="1dp" android:color="@color/greylight" />

            <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" />
        </shape></item>

</selector>

这是我的行

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/backColor"
    android:orientation="horizontal" >

    <RelativeLayout
        android:id="@+id/relativeMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="5dp"
        android:background="@drawable/list_item_selector" >

        <TextView
            android:id="@+id/txt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:textColor="@color/RedColor"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </RelativeLayout>
</LinearLayout>

3 个答案:

答案 0 :(得分:0)

尝试在选择器

中的某个项目中使用android:state_focused状态

<item android:state_focused="true" ><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
        <solid android:width="1dp" android:color="@color/greylight" />

        <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" />
    </shape></item>

答案 1 :(得分:0)

尝试将此代码用作可绘制文件夹中项目的边框:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle" >

    <solid android:color="@android:color/transparent" />

    <stroke
        android:width="1px"
        android:color="#61979797" />

    <corners
        android:bottomLeftRadius="1dp"
        android:bottomRightRadius="1dp"
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp" />

</shape>

并将此代码也用于drawable文件夹中的选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/border" android:state_selected="true"></item>
    <item android:drawable="@android:color/transparent"></item>

</selector>

答案 2 :(得分:0)

您需要在选择器中使用state_selected="true"

这是我在其中一个项目中使用的类似内容:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true">
            <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
                <stroke android:width="1dp" android:color="@color/White"/>
            </shape>
        </item>
    </selector>