突出显示Cards UI ListView中的整个项目

时间:2013-10-13 00:42:37

标签: android listview android-listview selector android-drawable

我有ListView我已经实现了卡片UI类型的外观。如果ListView中的某个项目处于“已选中”或“已按下”状态,则该项目周围会出现白色边框。我希望整个视图都有蓝色,但不知道如何实现:

Single item in the ListView

ListView项目布局

<?xml version="1.0" encoding="utf-8"?>

    <FrameLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <RelativeLayout
            android:id="@+id/itemLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="0dp"
            android:layout_marginRight="0dp"
            android:layout_marginTop="4dp"
            android:layout_marginBottom="4dp"
                android:background="@drawable/bg_cards_ui"
           >

            <TextView  
                android:id="@+id/title"
                android:layout_alignParentTop="true"
                android:paddingBottom="4dip"
            />

            <TextView  
                android:id="@+id/summary"
                android:paddingBottom="4dip"
                android:layout_below="@id/text"
            />

            <TextView  
                android:id="@+id/siteName"
                android:layout_below="@id/summary"
            />

            <TextView  
                android:id="@+id/date"
                android:layout_below="@id/summary"
            />
        </RelativeLayout>
    </FrameLayout>

bg_c​​ard_ui.xml

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" android:dither="true">

            <corners android:radius="2dp"/>

            <solid android:color="#ccc" />

        </shape>
    </item>
    <item android:bottom="2dp">
        <shape android:shape="rectangle" android:dither="true">

            <corners android:radius="2dp" />

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

            <padding 
                android:bottom="8dp"
                android:left="8dp"
                android:right="8dp"
                android:top="8dp" 
            />
        </shape>
    </item>
    <item>
        <selector>  
            <item android:state_pressed="true" android:drawable="@color/my_blue_color" />

            <item android:state_selected="true" android:state_pressed="false" android:drawable="@color/my_blue_color" />

            <item android:state_activated="true" android:state_selected="false" android:state_pressed="false" android:drawable="@color/my_blue_color" />

            <item android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/transparent" /> 
        </selector>
    </item>
</layer-list>

1 个答案:

答案 0 :(得分:1)

检查一下:ListView - Highlight sub layout of item.我已经实现了我认为你想做的事情。

基本上,对于你所拥有的,你需要让选择器引用每个项目的“drawable”属性中的后台xml文件。您将需要至少两个背景xml文件,一个用于正常状态,另一个用于按下,具有您想要的颜色更改。应该在那之后工作。