Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE in Button background failure

android Button background failure

when I try to add

android:background="@drawable/roundedbutton"

into the .xml

<Button
     android:id="@+id/button_stop"
     style="@android:style/Widget.Button"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_margin="3dp"
     android:background="@drawable/roundedbutton"
     android:layout_weight="1"
     android:text="stop"
     android:textSize="18sp" />

the roundedbutton.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/colorPrimary" />
    <corners android:bottomRightRadius="8dp"
        android:bottomLeftRadius="8dp"
        android:topRightRadius="8dp"
        android:topLeftRadius="8dp"/>
</shape>

the button became blank and Android Studio 3.2.1 gives an error

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 android.view.ViewGroup_Delegate.drawShadow(ViewGroup_Delegate.java:86)
    at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:58)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
    at android.view.View.draw_Original(View.java:20075)
    at android.view.View_Delegate.draw(View_Delegate.java:68)
    at android.view.View.draw(View.java:19849)
    at android.view.ViewGroup.drawChild_Original(ViewGroup.java:4333)
    at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:63)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
    at android.view.View.draw_Original(View.java:20075)
    at android.view.View_Delegate.draw(View_Delegate.java:68)
    at android.view.View.draw(View.java:19849)
    at android.view.ViewGroup.drawChild_Original(ViewGroup.java:4333)
    at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:63)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
    at android.view.View.draw_Original(View.java:20075)
    at android.view.View_Delegate.draw(View_Delegate.java:68)
    at android.view.View.draw(View.java:19849)
    at android.view.ViewGroup.drawChild_Original(ViewGroup.java:4333)
    at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:63)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
    at android.view.View.draw_Original(View.java:20210)
    at android.view.View_Delegate.draw(View_Delegate.java:56)
    at android.view.View.draw(View.java:20177)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.renderAndBuildResult(RenderSessionImpl.java:405)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.renderAndBuildResult(RenderSessionImpl.java:552)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:426)
    at com.android.layoutlib.bridge.BridgeRenderSession.render(BridgeRenderSession.java:108)
    at com.android.ide.common.rendering.api.RenderSession.render(RenderSession.java:154)
    at com.android.ide.common.rendering.api.RenderSession.render(RenderSession.java:136)
    at com.android.tools.idea.rendering.RenderTask.lambda$renderInner$5(RenderTask.java:671)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Thank you.

like image 497
Jack Wilson Avatar asked Oct 22 '18 05:10

Jack Wilson


3 Answers

UPDATE

The fix for this will be included in Android Studio 3.5 Canary 2

enter image description here

java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE

The issue with targetSdkVersion 28

Looks like this started being enforced in P: https://developer.android.com/reference/android/graphics/Canvas#clipRect(android.graphics.RectF,%20android.graphics.Region.Op)

also reported here

  • https://issuetracker.google.com/issues/121235731
  • https://github.com/facebook/stetho/issues/607
  • https://github.com/ArthurHub/Android-Image-Cropper/issues/553
  • https://github.com/ArthurHub/Android-Image-Cropper/pull/588

Temporary solution for your case

Use

<corners
    android:radius="8dp"/>

instead of

<corners android:bottomRightRadius="8dp"
    android:bottomLeftRadius="8dp"
    android:topRightRadius="8dp"
    android:topLeftRadius="8dp"/>
like image 104
AskNilesh Avatar answered Nov 02 '22 16:11

AskNilesh


Same issue occur in my end, it was fixed now Change the targetSdkVersion 28 to 27 in build.gradle. Thanks

like image 36
Praveen Kumar Verma Avatar answered Nov 02 '22 14:11

Praveen Kumar Verma


This is what fixed it for me:

.setCropShape(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P ? CropImageView.CropShape.RECTANGLE : CropImageView.CropShape.OVAL)
like image 8
Marc Alexander Avatar answered Nov 02 '22 14:11

Marc Alexander