我在使用新的 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) 上运行应用程序,屏幕如下所示:
现在我想通过在 xml 中设置它来设置 cardElevation
cardview:cardElevation="8dp"
启动应用程序后,按钮看起来像这样(不再是圆圈):
似乎设置卡片高度也会影响 View 的尺寸...如果您现在仔细查看图片 #1,您会发现这个按钮也不是一个完美的圆形。
有没有办法解决这个问题?我也试过设置这个
cardview:cardPreventCornerOverlap="false"
但是也没有影响
谢谢大家:)
最佳答案
将 CardView 用于 FAB 阴影并不是最好的主意。 CardView 是一个布局,所以它很重。它在 Lollipop 之前的版本上也非常有限。阴影不是动画的,角落填充内容并且没有波纹。似乎没有什么好的方法可以仅使用 AppCompat 实现 100% FAB。
总的来说,我不喜欢受 AppCompat 的限制,所以我在常规类的基础上编写了自己的 Button 类。正如您在屏幕截图中看到的那样,我能够取得非常好的结果。它是 Gingerbread,有动画阴影、波纹、矢量图形等。它是一个相当大的存储库,所以我无法在这里为您提供简短的解决方案,但如果您愿意,请查看 github 上的代码。 .
关于android - Pre-Lollipop 上的 CardView 兼容性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854839/