自定义ListView drawable不适用于EditText

时间:2015-03-11 11:49:17

标签: android xml android-layout android-listview

我为每个listview项目实现了一个自定义列表视图,其中包含textview和edittext。我试图实现的功能是当state_pressed整个listview行的背景将改变颜色并在不是state_pressed时恢复为原始颜色。

到目前为止,我发现如果我的listview项目不包含edittext元素,则在state_pressed上我的listview项目将改变它的背景颜色。

在listview项中添加edittext元素后,更改背景颜色的state_pressed代码将不再起作用。我哪里错了?

我的ListView XML

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/listView" />

适配器

中膨胀的ListView项目
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"

android:descendantFocusability="beforeDescendants"

android:background="@drawable/selector_listview"
android:stretchColumns="0">

<TableRow>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="36dp"
        android:layout_marginBottom="2dp"
        android:layout_marginLeft="12dp"
        android:layout_marginRight="12dp"
        android:layout_marginTop="2dp"
        android:id="@+id/textView"

        android:gravity="center_vertical" />

//works without this part -----> start    
<EditText
        android:layout_width="80dp"
        android:layout_height="36dp"
        android:layout_gravity="center_vertical"
        android:layout_marginBottom="0dp"
        android:layout_marginLeft="0dp"
        android:layout_marginRight="12dp"
        android:layout_marginTop="0dp"
        android:id="@+id/editText"

        android:background="@drawable/edittext"
        android:gravity="center" />
//----> end
</TableRow>

</TableLayout>

selector_listview.xml

<selector
xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:drawable="@drawable/listview_normal"
    android:state_pressed="false" />

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

</selector>

listview_normal.xml

<shape
xmlns:android="http://schemas.android.com/apk/res/android">

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

</shape>

listview_state_pressed.xml

<shape
xmlns:android="http://schemas.android.com/apk/res/android">

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

</shape>

0 个答案:

没有答案