2011-12-05 19 views
6

Mam ListView, gdzie każdy element listy jest niestandardowym układem opartym na RelativeLayout, jest klikalny i ma niestandardowy selektor. En plus ma sub-RelativeLayout, który jest również klikalny i ma swój własny selektor.Widok uzyskuje stan jego rysowania (naciśnięty, itp ...) od rodzica

coś takiego:

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

Wszystko działa doskonale, ale problemem jest to, że po kliknięciu na macierzystej względnym układzie, selektor dziecko przyjmuje stan selektora nadrzędnego. Próbowałem ustawić na dziecko, ale nic się nie zmieniło.

Każdy pomysł? Z góry dziękuję

Odpowiedz

2

Czy możesz pokazać swój kod pozycji i selektorów ListView? Moim zdaniem popełniłeś błędy, kiedy je zaimplementowałeś. Oto mój przykład przedmiotu i jego selektorów. Działa to dobrze dla mnie:

wideo, jak działa mój realizacja: >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> 
Powiązane problemy