android - Pre-Lollipop 上的 CardView 兼容性问题

标签 android android-5.0-lollipop android-cardview

我在使用新的 CardView 时遇到了一些问题

这就是我目前的情况:我想使用 CardView 为所有设备(也包括 Pre-Lollipop)提供 float 操作按钮

我的 Activity 布局是这样的

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:cardview="http://schemas.android.com/apk/res-auto"
         android:id="@+id/container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="#cdcdcd"
         android:focusable="false">

<include layout="@layout/toolbar"/>


<android.support.v7.widget.CardView
    android:layout_width="58dp"
    android:layout_height="58dp"
    cardview:cardPreventCornerOverlap="true"
    android:layout_gravity="bottom|right"
    android:layout_marginBottom="16dp"
    android:layout_marginRight="18dp"
    cardview:cardCornerRadius="29dp"
    cardview:cardBackgroundColor="?attr/colorPrimary">

    <ImageView
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_gravity="center"
        android:layout_margin="12dp"
        android:src="@android:drawable/ic_menu_edit"/>
</android.support.v7.widget.CardView>

在 Nexus 5 (4.4.4) 上运行应用程序,屏幕如下所示: MainActivity with FAB - no custom cardView corner radius

现在我想通过在 xml 中设置它来设置 cardElevation

cardview:cardElevation="8dp"

启动应用程序后,按钮看起来像这样(不再是圆圈): MainActivity with FAB - custom cardView corner radius - set to 8dp

似乎设置卡片高度也会影响 View 的尺寸...如果您现在仔细查看图片 #1,您会发现这个按钮也不是一个完美的圆形。

有没有办法解决这个问题?我也试过设置这个

cardview:cardPreventCornerOverlap="false"

但是也没有影响

谢谢大家:)

最佳答案

将 CardView 用于 FAB 阴影并不是最好的主意。 CardView 是一个布局,所以它很重。它在 Lollipop 之前的版本上也非常有限。阴影不是动画的,角落填充内容并且没有波纹。似乎没有什么好的方法可以仅使用 AppCompat 实现 100% FAB。

总的来说,我不喜欢受 AppCompat 的限制,所以我在常规类的基础上编写了自己的 Button 类。正如您在屏幕截图中看到的那样,我能够取得非常好的结果。它是 Gingerbread,有动画阴影、波纹、矢量图形等。它是一个相当大的存储库,所以我无法在这里为您提供简短的解决方案,但如果您愿意,请查看 github 上的代码。 .

enter image description here

关于android - Pre-Lollipop 上的 CardView 兼容性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854839/

相关文章:

android - 刷新小部件时每个对象都被销毁了吗?

java - 将 Android 设备的壁纸保存为图片

android - 此 iOS UI 元素及其 Android 替代元素的名称?

android - v0.79+ 中对 ARM64 的 Realm 支持导致在 Galaxy S6 上找不到其他 native 库

android - 使用 camera2 API 缓慢关注 Nexus 6

java - 加载完整图像 Recyclerview Cardview

java - notifyDataSetChanged 不适用于线程

android - 是否有为所有用户卸载应用程序的 Intent ?

具有自定义阴影颜色的 Android CardView

android - CardView 内的圆角图像