FAB - 在Android 5.0以下的版本中是正方形的,在Android 5.0及以上的版本中没有阴影。

22

看起来在Android 4.0和Lollipop上,FloatingActionButton似乎无法正常工作。如下图所示,在Android Lollipopo上缺少阴影,在Android 4.1.1上则是方形的:/

是否有人遇到过这个问题?

库版本:compile 'com.android.support:design:22.2.0'

代码:

<android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/abc_ic_clear_mtrl_alpha"/> 

在此输入图像描述


7
有一个已报道的问题具有类似的行为;https://code.google.com/p/android/issues/detail?id=175067。 - harism
5个回答

33

感谢 @harism 的评论,只需设置 app:borderWidth="0dp" 即可解决这两个问题。

注意:不要忘记将 xmlns:app="http://schemas.android.com/apk/res-auto" 添加到您的根布局。


1
我仍然看到在Lollipop设备上它是一个正方形。我有什么遗漏吗? <android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" app:borderWidth="0dp" android:scaleType="center" android:elevation="5dp" android:src="@drawable/ic_add" android:layout_marginBottom="16dp" android:layout_width="56dp" android:layout_height="56dp" android:id="@+id/fab_1" android:layout_gravity="center_horizontal|bottom"/> - Raghunandan
注意:此代码在运行 Android 5.1 的 Nexus 5 上尚未测试。 - Raghunandan
这个问题已在v22.2.1中修复。如果您仍然遇到问题,请确保您没有直接设置背景颜色,而是设置了色调。 - Bryan Bryce

5
如果将borderWidth设置为0dp后,FAB仍然显示为正方形,请确保您没有在XML中设置android:background或在代码中调用setBackgroundColor。
您应该使用android:backgroundTint(XML)或setSupportBackgroundTintList(代码)。

4

@Raghunandan,我在Lollipop上遇到了同样的问题。
最终我发现问题的根本原因是我的drawable文件夹中有一个名为“fab_background”的可绘制对象。
这个可绘制对象以前用于我的自定义fab实现。
现在,我将这个可绘制对象重命名后,我可以看到圆形的fab了。


3

设置app:borderWidth="0dp"是有效的。但是,如果您在Android Studio中遇到渲染问题,并且将Renderer设置为Android M或22,请将其设置为21。


1

似乎是一个bug。开发人员表示:“已经在内部修复了,即将发布。”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接