为什么都是ViewGroup的LayoutParams,也会报cannot be cast to android.view.ViewGroup$MarginLayoutParams?

简介: 为什么都是ViewGroup的LayoutParams,也会报cannot be cast to android.view.ViewGroup$MarginLayoutParams?

今天在代码里要动态改变 SurfaceView 的尺寸时,因为父布局是 FrameLayout ,自然就使用了 如下写法

val layoutParams = FrameLayout!!.layoutParams
      layoutParams.height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, height, resources.displayMetrics).toInt()
      layoutParams.width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, width, resources.displayMetrics).toInt()
   SurfaceView!!.layoutParams = layoutParams

最后运行的时候 , 没想到这样写居然会报错了???


java.lang.ClassCastException: android.view.ViewGroupL a y o u t P a r a m s c a n n o t b e c a s t t o a n d r o i d . v i e w . V i e w G r o u p LayoutParams cannot be cast to android.view.ViewGroupLayoutParamscannotbecasttoandroid.view.ViewGroupMarginLayoutParams


异常说的是两个是不同类型的LayoutParams ,但明明都是ViewGroup的LayoutParams呀,而且log上没有标明位置,实际是为什么呢


其实就是不去新建一个LayoutParams,而是从原来的View中直接获取LayoutParams。


val layoutParams = FrameLayout!!.layoutParams
改为
val layoutParams = recordUVCView!!.layoutParams

改完运行结果没有出现异常了。


因为,当一个View已经有了LayoutParams,是不能再次添加一个新创建的LayoutParams的,如果这样操作就会报这样的错。

一个小小的坑,希望大家看到后可以避免。

祝大家周末愉快


目录
相关文章
|
XML Android开发 数据格式
android自定义View&自定义ViewGroup(下)
本篇来看看自定义ViewGroup
111 0
|
XML 前端开发 Android开发
android自定义View&自定义ViewGroup(上)
自定义View&自定义ViewGroup
101 0
|
XML 存储 Java
【Android】Android对于Activity的运用以及ViewGroup和 用户界面组件在项目中的运用
【Android】Android对于Activity的运用以及ViewGroup和 用户界面组件在项目中的运用
112 0
【Android】Android对于Activity的运用以及ViewGroup和 用户界面组件在项目中的运用
|
XML 存储 网络协议
【Android】使用Android开发应用过程中遇到ViewGroup的简单效以及aw和assets文件夹下的文件(Http协议的底层工作)
【Android】使用Android开发应用过程中遇到ViewGroup的简单效以及aw和assets文件夹下的文件(Http协议的底层工作)
131 0
【Android】使用Android开发应用过程中遇到ViewGroup的简单效以及aw和assets文件夹下的文件(Http协议的底层工作)
|
XML Android开发 数据格式
Android自定义控件(十一)——自定义ViewGroup实现LinearLayout
Android自定义控件(十一)——自定义ViewGroup实现LinearLayout
421 0
|
XML 前端开发 Android开发
Android自定义View-入门(明白自定义View和自定义ViewGroup)
为什么要自定义View? 主要是Andorid系统内置的View 无法实现我们的 需求,我们需要针对我们的业务需求定制我们想要的 View.
111 0
Android自定义View-入门(明白自定义View和自定义ViewGroup)
|
XML 缓存 调度
Android ViewGroup介绍+实例
ViewGroup是一个特殊的View,可以包含其他视图(称为子视图)。而ViewGroup是View的 子类 ,所以ViewGroup可以当成普通的UI组件使用。ViewGroup是布局和视图容器的基类,该类还定义了ViewGroup.LayoutParams用作布局参数 基类 的类。
212 0
Android ViewGroup介绍+实例
|
Java Android开发
【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )(五)
【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )(五)
97 0
|
Android开发
【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )(三)
【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )(三)
124 0
|
Java Android开发
【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )(二)
【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )(二)
140 0