2011-12-05 10 views
6

Tengo un ListView donde cada elemento de la lista es un diseño personalizado basado en un RelativeLayout, se puede hacer clic y tiene un selector personalizado. En plus, tiene un Sub-RelativeLayout que también se puede hacer clic y tiene su propio selector.La vista obtiene su estado dibujable (presionado, etc ...) desde su elemento primario

Algo como esto:

--------------- 
|    | 
|   ___ | 
|  | | | 
--------------- 

Todo funciona perfectamente, pero el problema es que cuando hago clic en la disposición relativa de los padres, el selector de hijo asume el estado del selector de matriz. Intenté establecer

android:duplicateParentState="false" 

en el niño, pero nada ha cambiado.

¿Alguna idea? Gracias de antemano

Respuesta

2

¿Puede mostrar el código del elemento y los selectores de ListView? En mi opinión, cometió algunos errores cuando lo implementó. Aquí está mi ejemplo de artículo y sus selectores. Funciona bien para mí:

vídeo, cómo funciona mi aplicación: >click to open<

list_view_item.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="40dp" 
    android:background="@drawable/relative_selector"> 

    <RelativeLayout 
     android:layout_width="300dp" 
     android:layout_height="100dp" 
     android:background="@drawable/child_selector_1" 
     android:clickable="true"> 

     <RelativeLayout 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_centerHorizontal="true" 
      android:background="@drawable/child_selector_2" 
      android:clickable="true"/> 
    </RelativeLayout> 
</RelativeLayout> 

relative_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <inset xmlns:android="http://schemas.android.com/apk/res/android"> 
      <shape android:shape="rectangle"> 
       <solid android:color="@android:color/holo_blue_bright" /> 
      </shape> 
     </inset> 
    </item> 
</selector> 

child_selector_1.xml

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

    <!-- pressed state --> 
    <item android:state_pressed="true"> 
     <inset xmlns:android="http://schemas.android.com/apk/res/android"> 
      <shape android:shape="rectangle"> 
       <solid android:color="@android:color/holo_orange_dark" /> 
      </shape> 
     </inset> 
    </item> 

    <!-- focused state --> 
    <item android:state_focused="true"> 
     <inset xmlns:android="http://schemas.android.com/apk/res/android"> 
      <shape android:shape="rectangle"> 
       <solid android:color="@android:color/holo_orange_dark" /> 
      </shape> 
     </inset> 
    </item> 

    <!-- normal state --> 
    <item> 
     <inset xmlns:android="http://schemas.android.com/apk/res/android"> 
      <shape android:shape="rectangle"> 
       <solid android:color="@android:color/holo_red_dark" /> 
      </shape> 
     </inset> 
    </item> 
</selector> 
Cuestiones relacionadas