错误:无效的可绘图添加到LayerDrawable!可绘制已属于另一个所有者,但不公开常量状态.。
今天我突然注意到了这个错误,我不知道是不是因为我刚刚将我的测试设备升级到了Android8.0。错误消息清楚地指出,在浮动动作按钮上设置纹波效果是有问题的,而且当按下按钮时,实际上没有波纹效应。然而,我不知道是什么导致了这个问题。实际上,完全相同的错误会连续抛出两次。任何帮助都将不胜感激!这个应用程序的其余部分仍然正常运行,但是这个bug确实困扰着我。
附注:minSdkVersion是22,targetSdkVersion和compiledSdkVersion是27
在MyActivity中,第117行是数据绑定和设置内容视图。
ActivityMyBinding binding = DataBindingUtil.setContentView(
this, R.layout.activity_my);
下面是完整的堆栈跟踪:
W/LayerDrawable: Invalid drawable added to LayerDrawable! Drawable already belongs to another owner but does not expose a constant state.
java.lang.RuntimeException
at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:1855)
at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1975)
at android.graphics.drawable.LayerDrawable.createConstantState(LayerDrawable.java:168)
at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:1779)
at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:1785)
at android.graphics.drawable.RippleDrawable.mutate(RippleDrawable.java:997)
at android.view.View.applyBackgroundTint(View.java:21809)
at android.view.View.setBackgroundDrawable(View.java:21680)
at android.support.design.widget.FloatingActionButton.access$001(FloatingActionButton.java:68)
at android.support.design.widget.FloatingActionButton$ShadowDelegateImpl.setBackgroundDrawable(FloatingActionButton.java:824)
at android.support.design.widget.FloatingActionButtonLollipop.setBackgroundDrawable(FloatingActionButtonLollipop.java:73)
at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:179)
at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:151)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at android.view.LayoutInflater.createView(LayoutInflater.java:647)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at android.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:276)
at android.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:261)
at com.generica.genericb.genericc.MyActivity.onCreate(MyActivity.java:117)
at android.app.Activity.performCreate(Activity.java:7174)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
发布于 2018-04-11 23:41:37
把app:srcCompat="@android:drawable/..."
改成android:src="@android:drawable/..."
帮我修好了。
奇怪..。不管是谁在给我发了答案,他们都把答案删掉了。=/
他们提到了可绘制是如何具有状态的,如果您将它分配给多个浮动操作按钮,那么跟踪可绘制的状态就会出现问题。显然,随着最近的一次更新,这个问题得到了解决。这让我意识到,我是用app:srcCompat
而不是android:src
来设置FAB的源。
发布于 2019-07-16 16:17:58
我需要使用app:backgroundTint
而不是android:backgroundTint
发布于 2019-09-11 03:49:17
如果在activity中有Fab,请保留下面的代码并删除android:backgroundTint="@color/colorPrimary"
--这解决了这个问题。
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/list_fab_margin"
android:layout_marginTop="@dimen/list_fab_margin"
android:layout_marginEnd="@dimen/list_fab_margin"
android:layout_marginBottom="@dimen/list_fab_margin"
app:backgroundTint="@color/colorPrimary"
app:fabSize="mini"
app:srcCompat="@drawable/ic_edit"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="41dp"
tools:layout_editor_absoluteY="16dp" />
https://stackoverflow.com/questions/49620810
复制相似问题