我有一个卡视图,其中包含一个RelativeLayout作为卡片的标题。
当我在平板电脑上时,整个卡片应该是可点击的,而当我在手机上时,只有头应该是可点击的。
我遇到的问题是,当我在平板电脑上时,头没有看到它的父程序的onClick事件。我做错什么了吗?
if (isTablet(getContext())) {
cardView.setOnClickListener((View v) -> {
//here the cardHeader doesn't have the clickevent of it's parent
// do something
});
} else if (isPhone(getContext())) {
cardHeader.setOnClickListener((View v) -> {
// do something
});以及xml文件:
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="@color/white">
<RelativeLayout
android:id="@+id/cardHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content">
....contains other views
</RelativeLayout>
</androidx.cardview.widget.CardView>发布于 2020-11-24 09:22:52
设置您对子View的单击,并在需要时为父级添加OnClickListener,并在调用cardHeader.performClick()或cardHeader.callOnClick()方法中设置
cardHeader.setOnClickListener((View v) -> {
// do something
});
if (isTablet(getContext())) {
cardView.setOnClickListener((View v) -> {
cardHeader.callOnClick();
});
}发布于 2020-11-24 10:06:44
根据您的代码,它的标题在平板电脑中是不可点击的。但我想您的要求是,您希望标题在两种情况下都是可点击的,无论它的平板电脑或手机和卡片是否只在平板电脑的情况下才能点击。
cardHeader.setOnClickListener((View v) -> {
// do something
});
if (isTablet(getContext())) {
cardView.setOnClickListener((View v) -> {
//do something
});
} https://stackoverflow.com/questions/64983489
复制相似问题