【问题标题】:Android's FloatingActionButton has a rendering exceptionAndroid Floating Action Button 出现渲染异常
【发布时间】:2015-06-28 21:18:29
【问题描述】:

渲染期间引发的异常:

Color value '?attr/colorAccent' must start with # (2 similar errors not shown)

这是什么意思?支持库上的文档不是很好。有没有人有一个很好的例子来说明如何实现 FloatingActionButton?

【问题讨论】:

    标签: android floating-action-button


    【解决方案1】:

    请尝试以这种方式为您的 Fab 选择颜色:

    fab:button_color="@android:color/holo_blue_bright"
    

    看看我的完整实现。

    <com.software.shell.fab.FloatingActionButton
        android:id="@+id/sub_category_fab"
        fab:type="DEFAULT"
        android:visibility="visible"
        fab:button_color="@android:color/holo_blue_bright"
        fab:image="@mipmap/ic_add_white_24dp"
        fab:image_size="@dimen/fab_image_size"
        fab:hide_animation="@anim/fab_roll_to_right"
        fab:show_animation="@anim/fab_roll_from_down"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="false"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="@dimen/fab_margin"
        />
    

    【讨论】:

      【解决方案2】:

      看起来它正在寻找颜色的十六进制代码(例如#FF0000)。 ?attr/colorAccent 的值可能会返回 null

      尝试用实际颜色(十六进制代码)替换该值。

      【讨论】:

      • ?attr 住在哪里?我正在尝试在 Android 项目的 values 目录中查找该文件夹,但它不存在。我应该做一个文件夹吗?
      • 这是一个原生的默认Android文件。它将在 SDK 文件中。 developer.android.com/sdk/api_diff/21/changes/…
      【解决方案3】:

      将缺少的颜色添加到您的 AppBaseTheme,错误就会消失:

      <style name="AppBaseTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
          ...
          <item name="colorAccent">@color/your_accent_color</item>
          <item name="colorControlHighlight">@color/your_ch_color</item>
      </style>
      

      【讨论】:

        【解决方案4】:

        在我看来,这是设计库中的一个错误。我在渲染期间(在设计器视图中)引发了相同的异常,但在运行时浮动按钮有效。而且app:fab_colorNormal和其他fab相关的属性在预览中没有考虑,而且按钮周围还有一个奇怪的方形阴影。

        所有这些都与实际执行不一致:当我在真实/模拟设备上进行测试时,按钮的行为与预期一样

        【讨论】: