使用新的CardView时遇到一些问题
这是我目前的情况:我想使用CardView为所有设备提供浮动操作按钮(也是Pre-Lollipop)
我的活动布局如下所示
<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"
启动应用后按钮看起来像这样(它不再是一个圆圈):
似乎设置卡片高度也会影响视图的尺寸...如果您现在仔细观察图片#1,您可以看到,此按钮也不是一个完美的圆圈。 / p>
有没有办法解决这个问题?我也试着设置这个
cardview:cardPreventCornerOverlap="false"
但它也没有影响
谢谢你们:)
答案 0 :(得分:1)
使用CardView进行FAB阴影不是最佳选择。 CardView是一种布局,所以它很重。它在Lollipop前版本上也非常有限。阴影没有动画,角落填充内容,没有波纹。似乎没有好方法只使用AppCompat来实现100%的FAB。
一般来说,我不满足于AppCompat,因此我根据常规类编写了自己的Button类。你可以在屏幕截图中看到,我能够取得相当不错的效果。它的姜饼和动画阴影,涟漪,矢量图形等等。它是一个非常大的存储库,所以我不能在这里给你一个简短的解决方案,但如果你愿意,请查看github上的代码。
答案 1 :(得分:0)
如果您不想在旧设备上使用阴影效果,可以尝试使用此MaterialDesign库中的FAB。
您可以在https://github.com/navasmdc/MaterialDesignLibrary
找到该库<com.gc.materialdesign.views.ButtonFloat
android:id="@+id/buttonFloat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="24dp"
android:background="#1E88E5"
materialdesign:animate="true"
materialdesign:iconDrawable="@drawable/ic_action_new" />
或者,您可以在drawables文件夹中创建自己的影子资源,并在按钮下方添加形状,如下所示:
<shape android:shape="oval"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/black_alpha"/>
<corners android:radius="20dip"/>
创建一个图层列表资源,其中包含按钮和阴影
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shadow"/>
<item
android:drawable="@drawable/button"
android:bottom="4px" />
</layer-list>