Android CardView的奇怪onClick高亮显示
我在设置为可点击的CardView中遇到了一些奇怪的行为。单击它会以稍微不同的方式突出显示卡中的所有视图,这使得停止按卡时看起来很奇怪 。理想情况下,当你的手指放在卡片上时,我希望整张卡片都变成粉红色。当你松开时,卡片会均匀地变回白色 任何建议都将不胜感激 card_class.xmlAndroid CardView的奇怪onClick高亮显示,android,xml,Android,Xml,我在设置为可点击的CardView中遇到了一些奇怪的行为。单击它会以稍微不同的方式突出显示卡中的所有视图,这使得停止按卡时看起来很奇怪 。理想情况下,当你的手指放在卡片上时,我希望整张卡片都变成粉红色。当你松开时,卡片会均匀地变回白色 任何建议都将不胜感激 card_class.xml <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cv"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_margin="5dp"
android:clickable="true"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:background="@drawable/button_rect_list_normal">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:clickable="false"
android:background="@drawable/button_rect_list_normal">
<TextView
android:id="@+id/class_name"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="18dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textColor="@color/text"
android:clickable="false"
android:text="@string/classname_placeholder"
android:background="@drawable/button_rect_list_normal"
android:paddingBottom="18dp"
android:autoText="true" />
<TextView
android:id="@+id/class_teacher"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="24dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@color/secondary2"
android:clickable="false"
android:text="@string/teacher_placeholder"
android:background="@drawable/button_rect_list_normal" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/period_placeholder"
android:id="@+id/class_period"
android:elegantTextHeight="false"
android:singleLine="true"
android:paddingRight="16dp"
android:textSize="57sp"
android:gravity="center_vertical" />
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:drawable="@drawable/selected" android:state_selected="true"/>
<item android:drawable="@drawable/pressed" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F44336"/>
</shape>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFCDD2"/>
</shape>
按钮列表\u normal.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cv"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_margin="5dp"
android:clickable="true"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:background="@drawable/button_rect_list_normal">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:clickable="false"
android:background="@drawable/button_rect_list_normal">
<TextView
android:id="@+id/class_name"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="18dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textColor="@color/text"
android:clickable="false"
android:text="@string/classname_placeholder"
android:background="@drawable/button_rect_list_normal"
android:paddingBottom="18dp"
android:autoText="true" />
<TextView
android:id="@+id/class_teacher"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="24dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@color/secondary2"
android:clickable="false"
android:text="@string/teacher_placeholder"
android:background="@drawable/button_rect_list_normal" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/period_placeholder"
android:id="@+id/class_period"
android:elegantTextHeight="false"
android:singleLine="true"
android:paddingRight="16dp"
android:textSize="57sp"
android:gravity="center_vertical" />
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:drawable="@drawable/selected" android:state_selected="true"/>
<item android:drawable="@drawable/pressed" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F44336"/>
</shape>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFCDD2"/>
</shape>
pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cv"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_margin="5dp"
android:clickable="true"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:background="@drawable/button_rect_list_normal">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:clickable="false"
android:background="@drawable/button_rect_list_normal">
<TextView
android:id="@+id/class_name"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="18dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textColor="@color/text"
android:clickable="false"
android:text="@string/classname_placeholder"
android:background="@drawable/button_rect_list_normal"
android:paddingBottom="18dp"
android:autoText="true" />
<TextView
android:id="@+id/class_teacher"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="24dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@color/secondary2"
android:clickable="false"
android:text="@string/teacher_placeholder"
android:background="@drawable/button_rect_list_normal" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/period_placeholder"
android:id="@+id/class_period"
android:elegantTextHeight="false"
android:singleLine="true"
android:paddingRight="16dp"
android:textSize="57sp"
android:gravity="center_vertical" />
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:drawable="@drawable/selected" android:state_selected="true"/>
<item android:drawable="@drawable/pressed" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F44336"/>
</shape>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFCDD2"/>
</shape>
selected.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cv"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_margin="5dp"
android:clickable="true"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:background="@drawable/button_rect_list_normal">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:clickable="false"
android:background="@drawable/button_rect_list_normal">
<TextView
android:id="@+id/class_name"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="18dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textColor="@color/text"
android:clickable="false"
android:text="@string/classname_placeholder"
android:background="@drawable/button_rect_list_normal"
android:paddingBottom="18dp"
android:autoText="true" />
<TextView
android:id="@+id/class_teacher"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="24dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@color/secondary2"
android:clickable="false"
android:text="@string/teacher_placeholder"
android:background="@drawable/button_rect_list_normal" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/period_placeholder"
android:id="@+id/class_period"
android:elegantTextHeight="false"
android:singleLine="true"
android:paddingRight="16dp"
android:textSize="57sp"
android:gravity="center_vertical" />
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:drawable="@drawable/selected" android:state_selected="true"/>
<item android:drawable="@drawable/pressed" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F44336"/>
</shape>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFCDD2"/>
</shape>
如果您想更改整个卡的背景,您应该将您的drawable应用到根
CardView
,我不确定为什么您将不同的背景drawable应用到多个视图组
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cv"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_margin="5dp"
android:clickable="true"
android:foreground="@drawable/button_rect_list_normal"
android:layout_height="wrap_content">
编辑:将android:background
更改为android:foreground
谢谢您的建议。但是,当我仅将背景可绘制应用于CardView时,当我单击它时,它不会高亮显示。我在RecyclerView中使用这张卡,在适配器中我为CardView设置了onClickListener;但是值得注意的是,android:clickable
会阻止你的CardView
onClickListener工作。谢谢你,将背景更改为前景可以正常工作,现在整个卡都会正确高亮显示。至于我的听者不工作,它似乎仍然工作。