2017-10-14 6 views
0

FrameLayoutには2つのネストされたLinearLayoutがあります。 FrameLayoutの場合はが必要です。検索後、私は解決策を得ましたclickable="false"。私はclickable="false"は、私の場合には動作しない、onClickのリスナーのためにデバッグする方法がわからないAndroidフレームレイアウトのクリックリスナーが動作しない

flOuter.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Toast.makeText(DeviceInMeeting.this, "detect", Toast.LENGTH_SHORT).show(); 
    } 
}); 

<FrameLayout 
    android:id="@+id/flOuter" 
    android:paddingLeft="@dimen/half_margin" 
    android:paddingRight="@dimen/half_margin" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:clickable="false" 
     android:gravity="center" 
     android:id="@+id/flAddIdProof" 
     android:background="@drawable/add_background" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <ImageView 
      android:clickable="false" 
      android:id="@+id/ivIcon" 
      android:src="@drawable/ic_add_black_48dp" 
      android:background="@drawable/add_button_border" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
     </LinearLayout> 

    <LinearLayout 
     android:clickable="false" 
     android:id="@+id/llLinear" 
     android:alpha="0.5" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <EditText 
      android:enabled="false" 
      android:clickable="false" 
      android:drawablePadding="@dimen/half_margin" 
      android:drawableLeft="@drawable/ic_devices_black_24dp" 
      android:hint="Identity Proof" 
      android:inputType="none" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:enabled="false" 
      android:clickable="false" 
      android:drawableLeft="@drawable/ic_border_color_black_24dp" 
      android:hint="Identity Number" 
      android:drawablePadding="@dimen/half_margin" 
      android:inputType="none" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 
</FrameLayout> 

はここに私のクリックのリスナーです:

は、これは私のレイアウトファイルです。

+0

重複:https://stackoverflow.com/q/37698640/1531971 – jdv

答えて

1

これは間違っています。使用してみてください:あなたがそれらにclickable=falseを追加クリックしたくない

<FrameLayout 
    android:id="@+id/flOuter" 
    android:paddingLeft="@dimen/half_margin" 
    android:paddingRight="@dimen/half_margin" 
    android:layout_width="match_parent" 
    android:clickable="true" 
    android:layout_height="wrap_content"> 

    // Other layouts there 

</FrameLayout> 
+0

クリック可能なフレームレイアウトが必要ですが、直線レイアウトではありません –

+0

はい。私は答えを編集しました。それを確認してください –

+0

理由はわかりませんが、あなたの解決策は私のために働いていませんでした... –

0

フィールドで。 そして、イベントをクリックしないフィールドの場合は、clickable=trueを追加します。ここで覚えておくべき

ことの一つは、あなたの子要素は、ボタンやedittextsのようないくつかのクリック可能な要素を含み、その後、あなたは親のレイアウト上のイベントをクリックしてください取得したい場合は、子へのクリック可能な虚偽を追加し、親に本当のことです。

0

てみFrameLayout

<FrameLayout  
    android:id="@+id/flOuter" 
    android:clickable="true" 
    android:paddingLeft="@dimen/half_margin" 
    android:paddingRight="@dimen/half_margin" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

ために次のコードスニペットでandroid:clickable="true"を実装し、他のネストされたレイアウトでandroid:clickable="false"を追加します。

<LinearLayout  
    android:id="@+id/flOuter" 
    android:clickable="false" /> 
0

あなたはonClickListenerの代わりにOnTouchListenerを設定する必要があります。 onTouchメソッドでは、タッチイベントが子に渡す(falseを返す)か、イベントを消費するかを決めることができます。

あなたの場合、ロジックを実行してtrueを返す必要があります。

関連する問題