shapeAppearance в компоненте материала FloatingActionButton вызывает сбой - PullRequest
2 голосов
/ 03 октября 2019
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)

Использование атрибута shapeAppearance вызывает сбой.

Это FAB в XML

<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" />

Ниже приведен стиль для 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>

Это решает сбой.

    <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>

Мне нужно знать причину этого и как ее решить, используя тот же стиль угла.

1 Ответ

1 голос
/ 03 октября 2019

Используйте атрибут app:shapeAppearanceOverlay:

<com.google.android.material.floatingactionbutton.FloatingActionButton
      app:shapeAppearanceOverlay="@style/CustomShapeOVerlay"
      />

И в стиле (без определения 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>

enter image description here

...