自定义行列表形状会覆盖选择器状态颜色

时间:2015-01-15 16:57:19

标签: android

我在列表视图中创建了一个自定义形状来制作圆角。当我向其添加选择器代码时,状态按下不起作用我所期望的。实际上,状态按下的颜色显示在自定义行列表之外。即它显示每个角落末端的颜色。我该怎么解决这个问题?

这是我的feed_list布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
     >

    <ListView
        android:id="@+id/listView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:dividerHeight="10dp" 
        android:listSelector="@drawable/list_selector" >
    </ListView>

</LinearLayout>

自定义行布局list_item

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="7dp"
    android:background="@drawable/customshape"
     >

    <ImageView
        android:id="@+id/thumb"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:contentDescription="@string/app_name" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_toLeftOf="@+id/arrow"
        android:layout_toRightOf="@+id/thumb"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:text="@string/title"
            android:textSize="16dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginTop="5dp"
            android:padding="2dp"
            android:text="@string/date"
            android:textColor="#7F7F7F"
            android:textSize="10dp" />
    </RelativeLayout>

    <ImageView
        android:id="@+id/arrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp"
        android:contentDescription="@string/app_name"
        android:src="@drawable/arrow_next" />

</RelativeLayout>

list_selector

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

    <!-- pressed state. -->
    <item android:state_pressed="true" 

     android:drawable="@drawable/bg_yellow_dark_round"/>


</selector>

bg_yellow_dark_round

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#AC7E00" />

<stroke
    android:width="2dp"
    android:color="#AC7E00" />

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

</shape>

customshape(圆角)

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

         <corners
            android:bottomLeftRadius="10dp"
            android:bottomRightRadius="10dp"
            android:topLeftRadius="10dp"


      android:topRightRadius="10dp" />

     <stroke android:width="1dp" android:color="#006699" />

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

</shape>

如果我删除android:background="@drawable/customshape"中的list_item,则可以。但是,我需要圆角和它。

1 个答案:

答案 0 :(得分:0)

为什么你的列表选择器在列表视图中而不在list_item里面,如果我理解你,你会列出视图,它的所有角都是圆角的。 在listview中你点击的每个智慧都有一个选择器,对吧? 如果是这样,你将把你的customshape放在listview和listItem上的list_selector上。