BottomAppBar引发IllegalArgumentException

时间:2018-11-26 04:13:24

标签: java android material-design

我正在使用最新的Material Design Android版库,并按照this文档创建BottomAppBar。

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragments.ARFragment">

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/blue"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

这里是例外。完整日志为here

java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed
    at android.graphics.Canvas.checkValidClipOp(Canvas.java:779)
    at android.graphics.Canvas.clipRect(Canvas.java:826)
    at com.google.android.material.shape.MaterialShapeDrawable.prepareCanvasForShadow(MaterialShapeDrawable.java:850)
    at com.google.android.material.shape.MaterialShapeDrawable.draw(MaterialShapeDrawable.java:746)
    at android.view.View.getDrawableRenderNode(View.java:20463)
    at android.view.View.drawBackground(View.java:20399)

我看到了其他与该异常相似的StackOverFlow线程,但是对我来说没有答案,因为该异常在库中。

我正在Android P上进行测试。

1 个答案:

答案 0 :(得分:1)

选中build.gradle中的“包含Google Maven存储库”。

allprojects {
repositories {
  jcenter()
  maven {
    url "https://maven.google.com"
  }
}
}

在您的build.gradle中放置材料组件依赖项。请记住,主要版本会定期更新。

implementation 'com.google.android.material:material:1.0.0-alpha1'

将compileSdkVersion和targetSdkVersion设置为以Android P为28的最新API版本。

android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.xxx"
    minSdkVersion 19
    targetSdkVersion 28
    versionCode 0
    versionName "1"

}