2011-10-20 18 views
1

私はボタンを含むカスタム行を持つlistViewを持っており、カスタムcursorAdapterでlistViewを設定します。ボタンを押したときにその背景を変更するためのボタンのセレクターを設定しました。ボタンを押したときに効果的です。問題はそれが行の他のどこかを押すときにも働くことです。android:listViewの親ビューの選択された属性と押された属性を無効にする方法

親ビューの.setPressed、.setSelected、.setFocusable、.setFocusableInTouchMode、.setClickable属性をfalseに設定しようとしましたが、機能しませんでした。

また、ボタンの.setDuplicateParentStateEnabledをfalseに設定しようとしましたが、どちらも役に立ちませんでした。

私は感謝するでしょう私を助けることができる場合は、

事前

にありがとう、私は私の質問を拡張してみましょう:私は(ボタンなしの行を持っている「delete_button」のIDとのTextViewであります以下のXMLコードで)最初に。ビュー内の別のボタンをクリックすると、削除ボタンが行内にスライドし、他のTextView(id:list_title_text)の背景が一定の色に変わります(これをクリック可能にしたくないため)

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/title_rows_relativelayout" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/list_title_text" 
     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="50dp" 
     android:textSize="25dp" 
     android:textColor="@android:color/white" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/selector_for_list_rows" 
     android:paddingLeft="15dp" 
     android:paddingBottom="5dp" 
     android:paddingRight="15dp" 
     android:gravity="center_vertical" 
     android:typeface="normal" /> 
    </TextView> 
    <TextView 
    android:id="@+id/delete_button" 
    android:background="@drawable/selector_for_delete_button" 
    android:layout_width="wrap_content" 
    android:layout_height="40dp" 
    android:textSize="23dp" 
    android:textColor="@android:color/white" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:gravity="center" 
    android:layout_alignTop="@+id/row_icon_background" 
    android:layout_alignParentRight="true" 
    android:layout_marginRight="5dp"> 
    </TextView> 
</RelativeLayout> 
+0

スタックオーバーフローへようこそ。あなたが正しいと思われる回答が投稿された場​​合は、それを受け入れてください。 –

+0

ありがとう!私はこのフォーラムでスレッドを読んで多くを学び、多くのことを尋ねて学びたいと思っています:) –

答えて

0

私のカスタムListAdapter内でボタンのsetFocusable属性をtrueに設定することで解決しました(私は質問を書いた後、私のCursorAdapterをListAdapterに変更しましたが、CursorAdapterでも動作すると確信しています)。ボタンの背景は、ボタンをクリックしたときにのみ変化し、他の場所をクリックすると何も起こりません。

0

、選択押され、活性化は、明示的に関係なく、子供のDUPLICATE_PARENT_STATE値の、それぞれViewGroup.dispatchSetSelected().dispatchSetPressed()、そして.dispatchSetActivated()によって子供に設定されています。これらの動作を無効にするには、親のno-opsでこれらのメソッドをオーバーライドします。

デフォルトでは、focusおよびpressedは、フォーカス可能でもクリック可能でもない子に伝播されます。私の場合、setDuplicateParentState(false)(これは既にViewクラスのデフォルトです)よりも、適切な子供にフォーカスまたはクリック可能をマークする方が正確でした。

私にとって、私はsetDuplicateParentStateEnabled()が赤ちゃんであることを発見し、それなしで私の問題を解決することができました。

関連する問題