如何在没有AppCompat的情况下添加浮动操作按钮?

时间:2015-06-23 12:39:36

标签: android android-support-library android-appcompat android-design-library floating-action-button

我正在寻找新的应用,仅使用API​​ 21。

要关注材料设计,我尝试使用FAB,但我找不到任何关于如何使用现在包含在设计库中的信息的正确信息。

到目前为止,我已将库添加到build.gradle文件中,并在我的视图中添加了FAB(下面的代码)

[dict objectForKey:@"infos"]

(这是在RelativeLayout中)

当我启动应用程序时,我得到:

  

android.view.InflateException:二进制XML文件行#15:错误   膨胀类android.support.design.widget.FloatingActionButton

我在SO上找到了一个答案,说我需要使用AppCompat主题,但我宁愿只使用纯Material / API21。

如何在没有AppCompat(支持库)的情况下使用FAB?

5 个答案:

答案 0 :(得分:8)

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:“请注意,由于Design库依赖于Support v4和AppCompat支持库,因此在添加Design库依赖项时将自动包含这些库。”< / p>

答案 1 :(得分:1)

Material Design库与AppCompat具有依赖关系。 检查@Booger的答案。它报道了官方博客。

如何使用FAB。

将依赖项添加到.item-icon { width: 48%; position: absolute; transition: all .2s ease-in-out; z-index: 999; }

build.gradle

只需将FAB添加到您的设计中:

compile 'com.android.support:design:22.2.0'

目前存在一些错误。

您必须定义<android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:src="@drawable/ic_add" android:layout_marginBottom="@dimen/fab_margin_bottom" android:layout_marginRight="@dimen/fab_margin_right" app:elevation="6dp" app:borderWidth="0dp" app:fabSize="normal" /> 以使用API​​21 +显示阴影。

此外,您还必须为API 21+和旧设备定义不同的边距。

RES /值/ dimens.xml

app:borderWidth="0dp"

RES /值-V21 / dimens.xml

<dimen name="fab_margin_right">0dp</dimen>
<dimen name="fab_margin_bottom">0dp</dimen>

FAB使用强调颜色,您可以使用<dimen name="fab_margin_right">16dp</dimen> <dimen name="fab_margin_bottom">16dp</dimen> 属性覆盖。

最后,您可以使用以下命令设置ClickListener:

app:backgroundTint

答案 2 :(得分:-1)

GitHub上还有几个流行的库:

FloatingActionButton可以展开/折叠菜单以显示多个操作。

答案 3 :(得分:-1)

我想说虽然您打算仅在API21上提供您的应用程序,但我鼓励您使用Android支持库AppCompat-v7实现您的应用程序。你会得到很多好处。

无论如何,这是你的选择。只是我的建议。但如果你确信。或者查看有关如何使用Android设计支持库的完整教程。 http://inthecheesefactory.com/blog/android-design-support-library-codelab/en

希望这个帮助

答案 4 :(得分:-1)

其实我遇到了同样的问题。解决方案非常简单: 你必须定义app:rippleColor="@color/colorPrimary" 并且您可以在不使用Appcompat主题和活动的情况下使用FAB。当然,您必须包含 compile 'com.android.support:support-v4:25.3.1'compile 'com.android.support:design:25.3.1' 但你不必使用AppCompatActivity和那些主题。

   <android.support.design.widget.FloatingActionButton
    android:id="@+id/action_add_palette"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"
    android:src="@android:drawable/ic_input_add"
    app:rippleColor="@color/colorPrimary" />