博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

问题来源


最近用了下RecyclerView,很好用,每个item我设置的是CardView包含一个TextView,

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="8dp"android:id="@+id/cv_item"card_view:cardCornerRadius="4dp"><TextView
        android:id="@+id/text_view"android:padding="20dp"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</android.support.v7.widget.CardView>

这样就可以显示cardview了,问题是给item添加一个selector

解决

1 类似Button直接在drawable下新建个card_selector.xml布局,然后设置CardView背景:

android:background="@drawable/card_selector"

然,,没有什么用。。。

2 google了下,我来到了这里:Android-L CardView Visual Touch Feedback

给CardView添加个前景:

android:foreground="?android:attr/selectableItemBackground"

这样就可以了,在5.0以上的设备上有点击有波纹效果,5.0以下无波纹,只有前景色变化

3 自定义CardView前景

Android-L CardView Visual Touch Feedback 也给出了方法,分为5.0之前和之后两种设置,因为5.0之前没有ripple,所以5.0之前采用inset 代替。

  • 设置CardView自定义的前景:
android:foreground="@drawable/card_foreground"
  • 5.0之后

drawable-v21/card_foreground.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#20000000"android:drawable="@drawable/card_foreground_selector" />

drawable-v21/card_foreground_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"><shape android:shape="rectangle"><solid android:color="#18ffc400"/></shape></item><item android:state_focused="true" android:state_enabled="true"><shape android:shape="rectangle"><solid android:color="#0f000000"/></shape></item>
</selector>

效果:

  • 5.0之前

drawable/card_foreground.xml

<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/card_foreground_selector"android:insetLeft="2dp"android:insetRight="2dp"android:insetTop="4dp"android:insetBottom="4dp"/>

drawable/card_foreground_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"><shape android:shape="rectangle"><solid android:color="#1838f508"/><corners android:radius="@dimen/card_radius" /></shape></item><item android:state_focused="true" android:state_enabled="true"><shape android:shape="rectangle"><solid android:color="#0f000000"/><corners android:radius="@dimen/card_radius" /></shape></item>
</selector>

效果:

  • 直接设置selector也是可以的:
android:foreground="@drawable/card_foreground_selector"

这样的话,5.0之前和之后效果一样,并不影响5.0之前的效果,但是5.0之后的ripple效果木有(木有设置,当然木有→_→)

分享是一种美德,更是一种生活方式!!

也许你会说我是一个梦想者,但我不是唯一的一个。

悦分享,越快乐^_^

欢迎交流,转载请注明出处,谢谢!

CardView 设置 selector相关推荐

  1. android RadioGroup中设置selector后出现多个别选中的RadioButton的解决办法

    在一个RadioGroup组中假如有三个或者以上的RadioButton,当然你需要给这些RadioButton设置selector.设置其中的一个为默认选中状态(在xml中设置).当程序在手机上运行 ...

  2. 初次使用CardView设置圆角等属性出现的问题(设置圆角出现层叠,外层View多出角的问题)

    今天心血来潮想做个比较好看的UI,在使用CardView设置圆角时出现下图的问题: 四个角很丑有没有,出现的原因是我在自定义View的根布局上使用了app:cardCornerRadius这个属性,却 ...

  3. Android 使用代码设置selector 的图片或文字颜色

    转自:http://www.jianshu.com/p/06703d56cab8 通常selector 都是在drawable/color文件夹中定义好,但有时候一些特殊需求需要我们动态通过代码去更改 ...

  4. Linux学习笔记(一)

    1 Linux系统简介 1.1 Unix发展历史和发行版本 1.1.1 Unix发展历史 (1)1965年,美国麻省理工学院(MIT).通用电气公司(GE)及美国电话电报公司(AT&T)的贝尔 ...

  5. 代码设置Shape和Selector

    开发中经常需要使用Shape和Selector,如果每个都用xml设置的话,会占用apk大小,同时命名多了也会混乱,使用代码来设置会方便很多. 需要用到2个类:GradientDrawable和Sta ...

  6. Android 图片着色 Tint 详解2—xml设置、selector

    上篇文章介绍了给drawable设置tint 以达到颜色变化效果,这篇介绍下通过xml设置tint.代码设置tint以及如何设置tint selector. 在xml中设置tint 可以利用 andr ...

  7. 部分笔记: canvas, permission , softInput , cardview

    图片上面两个是圆角,下面不是圆角 1,使用自定义Imageview ,在onDraw里面实现 `@Overrideprotected void onDraw(Canvas canvas) {Bitma ...

  8. [转]android selector 背景选择器

    关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是 很全,所以现在总结一下android的selector的用法. 首先android的selector是 ...

  9. [转]android的selector,背景选择器

    本文转自:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6014.html 最近做listview和button都要改变Android原来控件的背景 ...

最新文章

  1. Hadoop 2.0 Yarn代码:心跳驱动服务分析
  2. Eclipse中导入Maven项目后没有run on server
  3. pyqt漂亮gui界面模板_一种基于模板的C代码自动生成方法
  4. [JavaWeb-Servlet]Servlet的体系结构
  5. mysql 存储xml类型_(MariaDB)MySQL数据类型详解和存储机制
  6. HtmlNinja-图片预加载以及图片元素img的complete属性
  7. python是什么课程-python课程体系是怎么样的?
  8. c语言中代码中的作用,C语言中#的神奇作用
  9. 游戏开发完整学习路线,都在这里了
  10. ruby中调用dll的诡异错误
  11. 关于我在《大话5G》这本书里学到了什么——5G和物联网不得不说的关系
  12. iOS进阶:【1、 使用文件路径获取自定义字体名称2、添加资源包到工程→在info.plist文件中注册字体→在工程Bundle Resource中复制字体资源包→代码检测查询加入的字体并使用。】
  13. PPT柱形统计图制作详情——小白秒变大神
  14. Logstash:使用 mutate 过滤器
  15. c语言提纲,C语言复习提纲
  16. EUI-64生成IPv6地址
  17. Wrapper中ge,gt,lt,le的含义
  18. 抖音小店无货源:为什么现在95后都不想上班,想着去创业?
  19. JavaScript数据类型及转换
  20. 计算机运行断电 硬盘,电脑突然断电的坏处有哪些?你知道吗?

热门文章

  1. Anaconda4.10.3安装
  2. 祭奠我逝去的8年码农时光
  3. Google+ 登录
  4. 目前用下来最溜的MacOS微信多开工具!
  5. 如何将EasyCVR平台RTSP接入的设备数据迁移到EasyNVR中?
  6. Python热点舆情数据挖掘
  7. 2021年11月11日文章读后感
  8. 《疯狂动物城》给我的感悟
  9. 求解汽车加油问题C++
  10. android qq存储方式,手机qq设置保存路径图解步骤