2011-12-05 11 views
6

私はListViewを持っています。各リスト項目はRelativeLayoutに基づいたカスタムレイアウトであり、クリック可能であり、カスタムセレクタを持っています。それはサブRelativeLayoutを持ち、クリック可能であり、独自のセレクタを持っています。このようなViewは親からdrawable状態(押された、等...)を取得します

何か:

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

すべてが完璧に動作しますが、問題は、私は親の相対的なレイアウトをクリックすると、子セレクタは、親セレクタの状態を想定していることです。私は設定しようとしました

android:duplicateParentState="false" 

子供には何も変わりません。

事前に感謝

答えて

2

ListViewの項目とセレクタのコードを表示してくださいできますか?私の心には、それを実装するときにいくつかの間違いがありました。ここに私のアイテムとそのセレクタの例があります。それは私のために正常に動作します:

私の実装がをどのように動作するかビデオ、:>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> 
関連する問題