Material Component FloatingActionButton 中的 shapeAppearance 导致崩溃

Ash*_*tel 4 android floating-action-button material-components android-jetpack material-components-android

E/OpenGLRenderer: resultIndex is -1, the polygon must be invalid!
A/OpenGLRenderer: Error: Spot pair overflow!!! used 38, total 22
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 11996 (hwuiTask1)
Run Code Online (Sandbox Code Playgroud)

使用 shapeAppearance 属性会导致崩溃。

这是 XML 中的 FAB

<com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/fab"
            style="@style/Widget.MaterialComponents.FloatingActionButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/fab_margin"
            android:onClick="@{() -> callback.add(viewModel.plant)}"
            android:tint="@android:color/white"
            app:shapeAppearance="@style/ShapeAppearance.Sunflower.FAB"  <--
            app:isGone="@{viewModel.isPlanted}"
            app:layout_anchor="@id/appbar"
            app:layout_anchorGravity="bottom|end"
            app:srcCompat="@drawable/ic_plus" />
Run Code Online (Sandbox Code Playgroud)

下面是 shapeAppearance 的样式,

<style name="ShapeAppearance.Sunflower.FAB" parent="ShapeAppearance.MaterialComponents">
        <item name="cornerFamily">rounded</item>
        <item name="cornerSizeTopLeft">0dp</item>
        <item name="cornerSizeTopRight">30dp</item>
        <item name="cornerSizeBottomRight">0dp</item>
        <item name="cornerSizeBottomLeft">30dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这解决了崩溃。

    <style name="ShapeAppearance.Sunflower.FAB" parent="ShapeAppearance.MaterialComponents">
        <item name="cornerFamily">rounded</item>
        <item name="cornerSizeTopLeft">0dp</item> <--
        <item name="cornerSizeTopRight">0dp</item>
        <item name="cornerSizeBottomRight">0dp</item> --
        <item name="cornerSizeBottomLeft">0dp</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

我需要知道它背后的原因以及如何在使用相同的角样式时解决它。

Gab*_*tti 9

使用app:shapeAppearanceOverlay属性:

<com.google.android.material.floatingactionbutton.FloatingActionButton
      app:shapeAppearanceOverlay="@style/CustomShapeOVerlay"
      />
Run Code Online (Sandbox Code Playgroud)

并在样式中(未定义parent

  <style name="CustomShapeOVerlay" parent="">
        <item name="cornerFamily">rounded</item>
        <item name="cornerSizeTopLeft">0dp</item>
        <item name="cornerSizeTopRight">30dp</item>
        <item name="cornerSizeBottomRight">0dp</item>
        <item name="cornerSizeBottomLeft">30dp</item>
  </style>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明