2015-07-01 65 views
1

我有一個簡單的ImageView包裹在一個FrameLayout裏給它一個連鎖反應連鎖反應:的onClick去除ImageView的

<FrameLayout 
    android:id="@+id/container" 
    android:layout_width="250dp" 
    android:layout_height="250dp" 
    android:clickable="true" 
    android:foreground="?android:attr/selectableItemBackground"> 

    <ImageView 
     android:id="@+id/image_view" 
     android:layout_width="250dp" 
     android:layout_height="250dp" 
     android:src="@drawable/image"/> 

</FrameLayout> 

這工作完全正常添加一個連鎖反應。但是,當我將一個onClick監聽器添加到ImageView中時,連鎖效應不再起作用,考慮到可以選擇/單擊的元素的連鎖效應,這很奇怪!

ImageView imageView = (ImageView)findViewById(R.id.image_view); 
imageView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // Logic. 
    } 
}); 

有沒有人有任何想法我可以保持onClick和漣漪?

+0

嘗試設置onClickListener對父視圖(FrameLayout裏)這樣的:使一個** ** java.lang.ClassCastException – Tomislav

+0

@Tomislav是你是對的。 ImageView.getParent()返回一個ViewParent。試試這個:((View)imageView.getParent())。setOnClickListener ...確保父視圖(FrameLayout)實現ViewParent接口或者演員陣容會掉落(我現在無法檢查它) – nabir

+0

((ImageView的)imageView.getParent())setOnClickListener .... – Tomislav

回答

4

集onClickListener上父視圖(的FrameLayout)所示:((View)imageView.getParent()).setOnClickListener...

ImageView.getParent()返回一個ViewParent。確保父視圖(FrameLayout)實現了ViewParent接口或者轉換失敗。

+0

謝謝!我也可以直接引用FrameLayout並添加一個onClick監聽器。 – nabir

+0

是的,這是更快,更乾淨的方式來做到這一點 – Tomislav