2017-10-14 17 views
0

FrameLayout에 두 개의 중첩 된 LinearLayout이 있습니다. FrameLayoutonClickListener()을 입력하고 싶습니다. 검색 후 나는 해결책을 얻었다 clickable="false". 나는 clickable="false" 내 경우에는 작동하지 않는, 온 클릭 리스너 디버깅하는 방법을 모른다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을 추가하십시오.

여기에서 기억해야 할 점은 자식 요소에 버튼과 edittext와 같은 클릭 가능한 요소가 포함되어 있고 부모 레이아웃에서 click 이벤트를 얻고 자한다면 클릭 가능한 false를 자식에 추가하고 부모에게는 true를 추가하는 것입니다.

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를 반환해야합니다.