Anko 中使用 CardView 无法设置 radius 圆角

Anko 提升了 Android 页面的渲染速度,但是在用 Anko 写布局的时却遇到了很多坑,用 XML 可以轻松实现的一些效果,在 Anko 中经常找不到解决方案。比如说题目中的这个问题。

XML 中 CardView 的实现

1. 首先在导入依赖

implementation 'com.android.support:cardview-v7:26.1.0'

2. XML 代码

 <android.support.v7.widget.CardView
    app:cardCornerRadius="@dimen/dp_10"
    app:cardElevation="@dimen/dp_10"
    app:cardPreventCornerOverlap="true"
    app:cardBackgroundColor="@color/colorBackground"
    android:foreground="?android:attr/selectableItemBackgroundBorderless"
    android:clickable="true"
    android:focusable="true"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_marginStart="20dp"
    android:layout_marginEnd="20dp"
    android:layout_height="80dp">
</android.support.v7.widget.CardView>

3. 属性详解

cardCornerRadius 属性用来设置 CardView 的圆角效果
cardElevation 属性用来提供 CardView 的阴影效果
cardBackgroundColor 属性用来设置 CardView 中的背景颜色
foreground 属性用来设置 CardView 的点击效果,前提是添加 clickable 和 focusable

效果

Anko 中 CardView 的实现

1. 导入依赖

implementation "org.jetbrains.anko:anko-cardview-v7:$anko_version"  // build.gradle  Module: app
ext.anko_version='0.10.7'  // build.gradle Project

2. Anko 代码

cardView {
    id_cardView = View.generateViewId()
    id = id_cardView
    radius = 43f
    cardElevation = 30f
    backgroundColor = ContextCompat.getColor(ctx, R.color.colorWhite)
    //background.setColorFilter(Color.WHITE,PorterDuff.Mode.SRC_ATOP)
}.lparams(width = matchParent, height = dip(200)) {
        leftMargin = dip(30)
        topMargin = dip(30)
        rightMargin = dip(30)
        topToBottom = id_toolbar
        startToStart = PARENT_ID
        endToEnd = PARENT_ID
}

代码看起来很完美,我们来看一下运行效果:

效果

圆角呢?圆角呢?圆角呢?

问题就出在了这句代码上:

backgroundColor = ContextCompat.getColor(ctx, R.color.colorWhite)

这句代码将背景色设置给了 ColorDrawable 而不是 RoundRectDrawable,所以应该把这句代码改成这样:

background.setColorFilter(ContextCompat.getColor(ctx,R.color.colorWhite),PorterDuff.Mode.SRC_ATOP)

修改之后的运行效果:

效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,822评论 25 709
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,033评论 3 119
  • 磁力链接转换种子(Magnet URI to Torrent)文件 bthub.org -全库,简称BTHub,一...
    senio阅读 48,994评论 3 1
  • 电影《魔兽》的宣传语上写着:这张票,我们等了十年。 无论电影内容好与不好,做为一名资深老玩家,(请忽略技能)我必须...
    洛凡晨阅读 509评论 3 1
  • 全世界静音,午夜听雨。 在雨中,读完一个短篇 你和故事主人 悄然浮现脑际 挥之不去 你睡着 还是清醒 不敢扰民 只...
    夜书房阅读 237评论 0 0