【发布时间】:2015-07-02 02:24:20
【问题描述】:
我有一个简单的 ImageView 包裹在 FrameLayout 中,以赋予它涟漪效果:
<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>
这可以很好地添加涟漪效果。但是,当我向 ImageView 添加 onClick 侦听器时,波纹效果不再起作用,考虑到波纹效果适用于可以选择/单击的元素,这很奇怪!
ImageView imageView = (ImageView)findViewById(R.id.image_view);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Logic.
}
});
有人知道如何保持 onClick 和涟漪吗?
【问题讨论】:
-
尝试像这样在父视图(FrameLayout)上设置onClickListener:((ImageView)imageView.getParent()).setOnClickListener....
-
@Tomislav 导致 java.lang.ClassCastException
-
是的,你是对的。 ImageView.getParent() 正在返回一个 ViewParent。试试这个: ((View)imageView.getParent()).setOnClickListener ... 确保父视图(FrameLayout)实现 ViewParent 接口,否则演员会下降(我现在无法检查)
-
@Tomislav 这似乎有效!将其添加为答案,以便我可以接受它:) 我可以直接调用 FrameLayout 并向该 (FrameLayout)findViewById(R.id.container).setOnClickListener 添加一个 onClick 侦听器...
-
太棒了。我将其添加为答案。