我是靠谱客的博主 传统芝麻,最近开发中收集的这篇文章主要介绍java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.Vie,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams
at com.mystudy.studyviews.views.ViewGroupView.onMeasure(ViewGroupView.java:60)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22002)
at androidx.constraintlayout.widget.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1572)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at androidx.appcompat.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:401)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721)
at android.view.View.measure(View.java:22002)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2410)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1498)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1751)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
为什么不能转化?明明是父子类的关系。百思不得其解啊。
这个是我在自定义ViewGroup中使用的部分代码:
View childrenView= getChildAt(i);
cwidth=childrenView.getMeasuredWidth();
cheight=childrenView.getMeasuredHeight();
MarginLayoutParams cParams= (MarginLayoutParams) childrenView.getLayoutParams();
ViewGroup.MarginLayoutParams明明是继承ViewGroup.LayoutParams的,为什么就是不能向下转型呢?
最后在各种情况下的推断中发现:
View childrenView= getChildAt(i);
cwidth=childrenView.getMeasuredWidth();
cheight=childrenView.getMeasuredHeight();
MarginLayoutParams cParams= new MarginLayoutParams(cwidth,cheight);
把代码改成这样就可以了,不会再报那个错误了。
最终我认为在自定义ViewGroup中ViewGroup.MarginLayoutParams是不会自己创建的。
最后
以上就是传统芝麻为你收集整理的java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.Vie的全部内容,希望文章能够帮你解决java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.Vie所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复