gpt4 book ai didi

android - 无法使用 android.material :1. 1.x 渲染 MaterialButton

转载 作者:IT王子 更新时间:2023-10-28 23:30:20 24 4
gpt4 key购买 nike

每当我使用 MaterialButton 时,我都会在 xml 预览中得到以下异常:

java.lang.IllegalArgumentException: java.lang.ClassCastException

我已升级到 android studio 3.4 和 com.google.android.material:material:1.1.0-alpha05

1.0.0 版可以工作,但任何 1.1.x 版都不能。

这是 IDE 还是库的问题?

-

作为引用,完整的堆栈跟踪:

java.lang.ClassCastException@d8dc5d1
at sun.reflect.GeneratedMethodAccessor893.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at android.animation.PropertyValuesHolder_Delegate.callMethod(PropertyValuesHolder_Delegate.java:108)
at android.animation.PropertyValuesHolder_Delegate.nCallFloatMethod(PropertyValuesHolder_Delegate.java:143)
at android.animation.PropertyValuesHolder.nCallFloatMethod(PropertyValuesHolder.java)
at android.animation.PropertyValuesHolder.access$400(PropertyValuesHolder.java:38)
at android.animation.PropertyValuesHolder$FloatPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.java:1387)
at android.animation.ObjectAnimator.animateValue(ObjectAnimator.java:990)
at android.animation.ValueAnimator.animateBasedOnTime(ValueAnimator.java:1339)
at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1471)
at android.animation.ValueAnimator.pulseAnimationFrame(ValueAnimator.java:1490)
at android.animation.AnimatorSet.pulseFrame(AnimatorSet.java:1163)
at android.animation.AnimatorSet.handleAnimationEvents(AnimatorSet.java:1146)
at android.animation.AnimatorSet.doAnimationFrame(AnimatorSet.java:1046)
at android.animation.AnimationHandler.doAnimationFrame(AnimationHandler.java:146)
at android.animation.AnimationHandler.access$100(AnimationHandler.java:37)
at android.animation.AnimationHandler$1.doFrame(AnimationHandler.java:54)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:947)
at android.view.Choreographer.doCallbacks(Choreographer.java:761)
at android.view.Choreographer_Delegate.doFrame(Choreographer_Delegate.java:66)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.renderAndBuildResult(RenderSessionImpl.java:563)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:425)
at com.android.layoutlib.bridge.BridgeRenderSession.render(BridgeRenderSession.java:120)
at com.android.ide.common.rendering.api.RenderSession.render(RenderSession.java:151)
at com.android.ide.common.rendering.api.RenderSession.render(RenderSession.java:133)
at com.android.tools.idea.rendering.RenderTask.lambda$null$8(RenderTask.java:755)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
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)

编辑仅当按钮样式未设置或默认时才会发生:

@style/Widget.MaterialComponents.Button

例如,设置为未提升的样式有效,因此作为一种解决方法,我使用工具命名空间来显示未提升的按钮样式。

编辑 2 应用主题父级已正确设置为 Theme.AppCompat.Light.DarkActionBar。这是一个 IDE 问题,因为它在我的模拟器和设备上运行良好。我还做了一个清晰的缓存和失效,干净的构建,重建......(我们在遇到奇怪的 IDE 问题时所做的标准事情)

编辑 3 最新的 A.S. 仍然没有运气。 3.4.1!

最佳答案

Update3:这最终在 Studio 3.5beta2 中得到修复!我们做到了伙计们! 🥳

Update2:我在这里提交了一个问题:https://issuetracker.google.com/issues/132562197 .请为可见度加注星标。

更新:This是一个更干净的解决方法,因为我们不必在整个 xml 布局中乱扔 tools:style 这已经无缘无故地停止了对我的工作,我不得不恢复到我的原始解决方法如下所述。


根据 Gautham 的发现,在我们得到实际修复之前,这里有一个解决方法:

将此样式添加到您的 styles.xml:

<!--  For the sake of xml preview not breaking  -->
<style name="UnelevatedButton" parent="Widget.MaterialComponents.Button.UnelevatedButton">
</style>

将它添加到您的 Button 中,如下所示:

<Button
...
tools:style="@style/UnelevatedButton"
style="@style/ActualButtonStyle"
/>

注意两者的顺序很重要,tools行需要排在第一位。

您可以更新您的 UnelevatedButton 以匹配您的 ActualButtonStyle 以使预览与您的实际运行时按钮保持一致。

关于android - 无法使用 android.material :1. 1.x 渲染 MaterialButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55791884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com