Android 如何仅使cardview的子项可单击,而不使整个cardview本身可单击?
以下是cardview在上下文中的布局:Android 如何仅使cardview的子项可单击,而不使整个cardview本身可单击?,android,xml,Android,Xml,以下是cardview在上下文中的布局: <android.support.v7.widget.CardView android:id="@+id/card" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="1dp" android:layout_marginR
<android.support.v7.widget.CardView
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="-25dp"
android:clickable="true"
app:cardUseCompatPadding="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardBackgroundColor="@color/md_white_1000"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="10dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/icon"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:maxLines="4"
android:textColor="@color/md_teal_900"
android:textSize="15sp"
android:textStyle="bold" />
<ImageView
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_height="wrap_content"
android:focusable="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:clickable="true"
android:id="@+id/icon"
android:src="@mipmap/ic_download" />
</RelativeLayout>
</android.support.v7.widget.CardView>
我只希望图标(imageview)可以单击。此cardview是recyclerview的一部分,我只能使整个卡对单击做出响应,而我只希望imageview可单击。将
OnClickListener
设置为imageview
,下面是一个示例:
ImageView image = (ImageView) findViewById(R.id.icon);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do operation
}
});
编辑:
如果使用onClick()
方法:
@Override
public void onClick(View v) {
switch(v.getId()){
//Add this case to your switch
case R.id.icon:
//Do operation
break;
}
}
正如@vspallas所说的,不要忘记添加Listener
image.setOnClickListener(this);
您可以使用onClick()方法执行@Michele Lacorte的答案,然后
ImageView image = (ImageView) findViewById(R.id.icon);
image.setOnClickListener(this);
我目前正在使用重写的OnClick()函数来侦听单击。我在哪里添加这个?在viewholder的构造函数中?我应该在哪里设置您最初显示的onclicklistener?我一次也做不到。整个卡响应点击,而不仅仅是图像视图。我只希望imageview是可点击的。我根本不希望标题是可点击的。这不是我必须对XML本身进行的更改吗?从布局中获取ImageView实例的位置,就像第一个代码一样,我根本不希望标题可以单击,只希望ImageView。这不是我必须对XML本身进行的更改吗?