2016-05-08 16 views
0

次はXMLコードですが、LinearLayoutのセレクタを作成する必要がありますが、子TextViewをタップするとセレクタバックグラウンドが他の領域をタップして表示されませんのLinearLayout!LinearLayoutセレクタがViewの子全体をカバーしない

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:gravity="center_vertical" 
    android:clickable="true" 
    android:focusable="true" 
    android:descendantFocusability="blocksDescendants" 
    android:background="?android:attr/selectableItemBackground"> 

    <ImageView android:paddingLeft="35dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/chart"/> 

    <TextView android:paddingLeft="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Medium Text" 
     android:id="@+id/tv_title" /> 

    <ImageView android:paddingRight="15dp" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:src="@drawable/ic_star_border_black_48dp" 
     android:id="@+id/iv_bookmark" /> 

</LinearLayout> 

答えて

1

はこれを試してみてください:

<TextView android:paddingLeft="10dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="Medium Text" 
    android:id="@+id/tv_title" 
    android:clickable="false" 
    android:focusable="false" /> 

私はdescendantFocusabilityだけ焦状態のためであるため、エラーの理由があると思います。タッチイベントには影響しません。 TextViewはまだクリック可能なので、それでもタッチイベントを消費することができ、したがって親がクリックを消費しないようにすることができます。

編集:

beforeDescendants代わりのblocksDescendantsandroid:descendantFocusabilityを設定してみてください。

編集2

android:addStatesFromChildren="true"に親を変更すると、子TextViewからclickablefocusableを削除するには、トリックを行うように見えました。

addStatesFromChildren:こののViewGroupの描画可能状態はまた、その子どもの描画可能な状態を含むかどうかを設定しViewGroupアンドロイドドキュメントに応じので、これは動作します。

子供が状態を設定するときには、親の状態も設定されます。

+0

これはうまくいきませんでしたか? –

+0

それでは@AkramQalalwaあなたは何をしようとしているのですか?LinearLayoutの全体をクリック可能か 'TextView'だけではないのですか?または、親にフォーカスが当てられていないのですか? – Andy

+0

LinearLayout内の任意の領域をタップすると、選択した背景が表示されますが、TextViewでは表示されません。タップすると何も起こりませんが、どこでタップしても別のアクティビティに切り替えることができます。問題はセレクタ内のTextViewをタップしたときだけです。 –

0

あなたTextViewfalseandroid:focusableandroid:focusableInTouchModeを設定してみてください。

+0

うまくいかなかった! : –

+0

'android:descendantFocusability =" blocksDescendants "'を 'LinearLayout'から削除してみることができますか? – jaibatrik

+0

どちらもこれはありません –

関連する問題