Androidボタンのバックグラウンドエラー
私が追加しようとすると
Android:background="@drawable/roundedbutton"
.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" />
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>
ボタンが空白になり、Android Studio 3.2.1でエラーが発生する
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)
ありがとうございました。
UPDATE
Java.lang.IllegalArgumentException:無効なRegion.Op-INTERSECTおよびDIFFERENCEのみ
targetSdkVersion 28
の問題
これはPで強制され始めたように見えます: https://developer.Android.com/reference/Android/graphics/Canvas#clipRect(Android.graphics.RectF、%20Android.graphics.Region.Op) =
ここでも報告
ケースの一時的な解決策
つかいます
<corners
Android:radius="8dp"/>
の代わりに
<corners Android:bottomRightRadius="8dp"
Android:bottomLeftRadius="8dp"
Android:topRightRadius="8dp"
Android:topLeftRadius="8dp"/>
私の側でも同じ問題が発生しましたが、修正されましたbuild.gradleのtargetSdkVersion 28 to 27
を変更します。ありがとう
これは私のためにそれを修正したものです:
.setCropShape(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P ? CropImageView.CropShape.RECTANGLE : CropImageView.CropShape.OVAL)
アクティビティでこの問題が発生した場合、ここで提案されている解決策を使用してレポートを検出できない場合、このエラーを生成するinstatbleライブラリを使用することになります。このライブラリのバージョンを変更しようとすると、問題が解決します
これを試して
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<stroke Android:width="2dp" Android:color="@color/black" />
<solid Android:color="@color/black" />
<corners Android:radius="7dp" />
</shape>
「style = "@ Android:style/Widget.Button"」を削除してみてください。
<Button
Android:id="@+id/button_stop"
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" />
私にとっては、私が変更されたときに修正されました
<corners Android:bottomRightRadius="8dp"
Android:bottomLeftRadius="8dp"
Android:topRightRadius="8dp"
Android:topLeftRadius="8dp"/>
に
<corners
Android:radius="8dp"/>
buttondesign.xmlファイルで置き換え
<Button
Android:id="@+id/btn_verify"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/yellow_btn_bg"
Android:text="Verify"
Android:textSize="16sp"
Android:layout_margin="20dp"
Android:layout_marginLeft="20dp"
Android:layout_marginRight="20dp"
Android:layout_marginTop="20dp"
Android:layout_marginBottom="20dp"
Android:layout_weight="1"
Android:textColor="@color/white"
/>
と
<Button
Android:id="@+id/btn_verify"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/yellow_btn_bg"
Android:text="Verify"
Android:textSize="16sp"
Android:layout_margin="20dp"
Android:layout_weight="1"
Android:textColor="@color/white"
/>