我正在寻找一个新的应用程序,只使用API 21.
要遵循Material Design,我正在尝试使用FAB,但是我找不到任何关于如何使用现在包含在设计库中的信息的正确信息.
到目前为止,我已经在库中添加了build.gradle文件,并在我的视图中添加了一个FAB(下面的代码)
<android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:src="@android:drawable/ic_menu_add" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true" app:elevation="5dp" app:borderWidth="0dp" app:fabSize="mini"/>
(这是在RelativeLayout中)
当我启动应用程序时,我得到:
android.view.InflateException: Binary XML file line #15: Error
inflating class android.support.design.widget.FloatingActionButton
我在SO上找到了一个答案,说我需要使用AppCompat主题,但我宁愿只使用纯Material / API21.
如何在没有AppCompat(支持库)的情况下使用FAB?
解决方法
FAB内置于新的Design Compat库中 – 它早在API 7上就可以在设备上运行.您需要将其作为依赖项使用它(并且应该毫不犹豫地这样做).
如果要避免使用库(或任何外部代码),则需要自己绘制FAB(使用Shape Drawable).
底线,使用Design Compat lib是支持FAB的首选方法,您应该使用它. Design Compat lib是“pure / Material API21 stuff”.
除了Design支持库中的API之外,没有为任何API实现FAB实现.您必须包含lib,或者完全自己实现代码.
Design lib依赖于AppCompat,因此如果您计划使用本机fab,则还需要包含AppCompat的依赖项.
从official blog post开始:“请注意,由于设计库依赖于Support v4和AppCompat支持库,因此在添加Design库依赖项时将自动包含这些库.”