android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams
大家好,又见面了,我是你们的朋友全栈君。
FrameLayout的父控件是一个LinearLayout控件,问题出在,LinearLayout为子控件分配空间的时候,获取FrameLayout的LayoutParams的必须为LinearLayout.LayoutParams,而非FrameLayout.LayoutParams。
简单的举个栗子说明一下:最外层有ReLativeLayout A,里面有两个LinearLayout B、C,而B中又有一个一个FrameLayout D。如果要在代码里设置B的LayoutParams,B的LayoutParams要为RelativeLayout.LayoutParams。
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); B.setLayoutParams(params);
而D要设置的话,需要:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0); params.weight = 8; D.setLayoutParams(params);
而笔者是直接使用的最外层的RelativeLayout,它的外层不是RelativeLayout了,导致笔者的代码一直报错
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams
所以笔者就在最外层的RelativeLayout放入了一个RelativeLayout_inside,然后再把自定义view放入RelativeLayout_inside,现在RelativeLayout_inside的外层就是RelativeLayout了,错误也就消失了。
现记录,引以为戒
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160833.html原文链接:https://javaforall.cn
相关文章
- android退出app代码,Android应用退出代码各种方式
- android vlc 中文字幕,解决Android版vlc中文乱码问题
- android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解…
- android短信验证码方案,Android之短信验证码
- 【Android布局】在程序中设置android gravity 和 android layout Gravity属性
- android应用程序_chrome Android
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- 错误解决:widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
- 【Android FFMPEG 开发】FFMPEG 直播功能完整流程 + 源码 ( 源码交叉编译 -> AS工程配置 -> 音视频打开/读取/解码/格式转换 -> 原生绘制播放 -> 音视频同步 )
- 【错误记录】p7zip 交叉编译 Android 版本 NDK 报错 ( error: case value evaluates to -2 , which cannot be narrowed )
- 【错误记录】Android Studio 编译报错 ( Cannot use connection to Gradle distribution . as it has been stopped. )
- 【错误记录】Android NDK 编译报错 ( no known conversion from ‘unsigned char *‘ to ‘const char *‘ )
- 【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )
- 【Android NDK 开发】Android NDK 下载 ( 下载指定历史版本 NDK | Android NDK r10e - 2015 年 5 月 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑤ ( 执行 init-android-libyuv.sh | 执行 init-android-soundtouch.sh )
- 【Android 屏幕适配】异形屏适配 ① ( 异形屏类型:刘海屏、水滴屏、挖孔屏 | 沉浸式布局刘海屏适配 | 华为手机异形屏适配注意点 )
- 【错误记录】Android Studio 编译报错 ( Could not resolve com.android.tools.build:gradle:7.4.2. )
- Android测试入门-1
- Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局详解手机开发
- android的Drawable详解手机开发
- 金山词霸下载 金山词霸v8.2.1 Android去广告版下载
- Android系统与Linux之间的联系(android和linux)
- Android版Office本月将推出“文件卡”功能
- Android控件系列之相册Gallery&Adapter适配器入门&控件缩放动画入门
- Android再按一次返回键退出程序实现思路