异常:java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.

解决 Android 中的 ClassCastException:ViewGroup$MarginLayoutParams 无法转换为 android 为了解决这个问题,我们需要确保正确地使用适当的布局参数,并将其与正确的视图类型进行关联。通过遵循正确的布局参数类型和视图类型的配对,我们可以避免这个错误,并正确地操作视图和布局参数。为了解决这个问题,我们需要确保正确地使用适当的布局参数,并将它们与正确的视图类型进行关联。下面是一些可能导致这个错误的常见情况,以及如何修复它们的示例代码。在这种情况下,我们需要确保将布局参数对象转换为与其关联的正确视图类型。这个错误的原因是在代码中出现了类型不匹配的情况。在创建视图时,需要使用适当的布局参数类型。 阅读详情

异常:java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams

今天在使用LayoutParams时出现了一个问题,我是这样用的:

在gridview初始化的时候,为gridview添加了一个header(我用的是第三方GridView是可以添加header的):

1
2
3
4
headerView = new View(getActivity());
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, (int)300);
headerView.setLayoutParams(params);    
mGridView.addHeaderView(headerView);

然后当程序执行到某处,我希望通过setLayoutParams来改变这个高度,于是我这样做:

1
2
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, 500);
headerView.setLayoutParams(params);

重点是,两个LayoutParams 都是ViewGroup的LayoutParams ,然后一执行就出现下列错误:

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams

跟android中的很多异常一样,你去仔细推敲异常本来的含义往往是百思不得其姐的,异常说的是两个是不同类型的LayoutParams ,但明明都是ViewGroup的LayoutParams。而且我确定ViewGroup的LayoutParams用在GridView的header上是可以的,因为我不执行上面的第二段代码不会报错(再次强调我用的是第三方GridView是可以添加header的)。


然后就在stackoverflow上查找答案,虽然没找到满意的,但是有个人的回答倒是点醒了我,是不是第二段代码中又重新创建了一个LayoutParams的关系?于是我将第二段代码改成:

1
2
LayoutParams params = headerView.getLayoutParams();
params.height = 500;

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

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

看来,当一个View已经有了LayoutParams,是不能再次添加一个新创建的LayoutParams的。


最后,这只是我结合实际情况的理解,并不确保我的分析正确,不过按照我的理解的的确确解决了问题。


为什么都是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 阅读详情

相关推荐

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2156

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view

项目场景: 在我实现自定义流式布局时,我使用了measureChildWithMargins对 问题描述: 提示:这里描述项目中遇到的问题: 例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据 APP 中接收数据代码: @Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes, -

lbj23vs6的博客 1439

Docker环境下onlyOffice 7.5.1破解版部署全攻略(含ARM架构适配)

本文提供了在Docker环境中部署OnlyOffice 7.5.1破解版的完整实战指南。内容涵盖x86与ARM架构服务器的详细部署步骤、环境配置、持久化存储设置以及生产环境下的安全与性能优化。重点解决了ARM架构适配的常见问题,并分享了使用Docker Compose进行服务编排和日常维护的技巧,帮助用户快速搭建私有化文档协作平台。

redis7keeper的博客 353

android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams

FATAL EXCEPTION: main Process: com.moreunion.zhenghao, PID: 3335 java.lang.ClassCastException: androi...

yuerliang的专栏 2879

unity转微信小游戏:使用CDN加载游戏(微信开发者工具云开发CDN)

unity转微信小游戏:使用CDN加载游戏(微信开发者工具云开发CDN)

会潜水的小火龙的博客 3071

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(ViewGroup...

faskjj的博客 2796

OpenIddict实战指南:在.NET Core中构建安全的OAuth 2.0与OpenID Connect服务

本文详细介绍了如何在.NET Core中使用OpenIddict框架构建安全、标准的OAuth 2.0与OpenID Connect授权服务。内容涵盖从快速搭建授权服务器、理解核心配置与授权流程,到集成用户数据库、实现完整登录授权,以及生产环境下的安全加固与部署指南,为.NET开发者提供了一套现代、可维护的认证授权解决方案。

weixin_29229989的博客 354

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.L

09-09 10:19:59.979: E/AndroidRuntime(2767): FATAL EXCEPTION: main 09-09 10:19:59.979: E/AndroidRuntime(2767): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to andro

Sunnyfans的专栏 3万+

在 RAP 中把业务对象“搬到网口上”:service definition 与 service binding 的全流程、范式与实战

本文解析了SAP ABAP开发中service definition和service binding的关键作用。service definition负责选择要暴露的CDS实体和行为,形成服务模型;而service binding则将服务绑定到具体协议(如OData),生成可访问的端点。两者分离带来三大优势:支持同一模型多重发布、降低环境迁移耦合度、强化安全治理。文章通过预订业务对象的端到端示例,展示了如何从CDS建模到生成Fiori Elements预览。最后以售后工单业务为例,说明这种架构如何支持内外服务

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 390

x265开源编码器源码框架深度解析

x265开源编码器源码框架深度解析

世界那么大,我想去看看~【随心更新,看世界去了😄】 668

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams今天在使用LayoutParams时出现了一个问题,我是这样用的:在gridview初始化的时候,为gridview添加了一个header(我用的是第

god2030的博客 4846

基于Dify实现对Excel的数据分析

在dify部署完成后,大家就可以基于此进行各种应用场景建设,目前dify支持聊天助手(包括对话工作流)、工作流、agent等模式的场景建设,我们在日常工作中经常会遇到各种各样的数据清洗、格式转换处理、数据统计成图等数据分析工作,本次主要基于对话工作流模式对Excel文件、csv文件进行解析处理,并进行成图等数据分析工作。主要用到的插件有LLM节点,文档提取器、参数提取器、自定义代码节点、echart插件等。实现解析Excel数据,经过上述不同节点的处理分析流程,最终实现数据统计图展示。

hhue2007的专栏 1万+

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.

FATAL EXCEPTION: main                                                                      Process: com.moreunion.zhenghao, PID: 3479                                                                   ...

yuerliang的专栏 863

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

LinearLayout layout = (LinearLayout) mInflater.inflate( R.layout.cell_check_item, null); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( ...

weixin_30830327的博客 391

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.L...

09-09 10:19:59.979: E/AndroidRuntime(2767): FATAL EXCEPTION: main09-09 10:19:59.979: E/AndroidRuntime(2767): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android...

weixin_30497527的博客 135

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

开发问题及解决 java.lang.ClassCastException:android.widget.LinearLayout$LayoutParams

Caused by: java.lang.ClassCastException:android.widget.LinearLayout$LayoutParams       最近,在android中用代码动态改变某种布局(组件)的高度时,会遇到如题所示的类转换异常。上网查了一下,如下所示: These supply parameters to the parent of th

巫山老妖 2万+

Android PinnedSectionListView异常崩溃报错

Android PinnedSectionListView异常崩溃报错:java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams Android PinnedSectionListView是一个良

Zhang Phil 2497

Android调用View的layout()方法的时候出现ClassCastException

今天在调试代码的时候出现了ClassCastException直接崩溃,导致崩溃的操作是跳转到一个好友列表页面,页面和微信的通讯录页面很像,就是一个列表,右边一个导航栏,原来一直用的模拟器调试,模拟器的sdk版本是4.4的,今天换到了7.0的真机就直接崩了。 打印的错误日志如下:java.lang.ClassCastException: android.view.ViewGroup$LayoutP

zhang10186的博客 764

android.view.ViewStub cannot be cast to android.view.ViewGroup

android.view.ViewStub cannot be cast to android.view.ViewGroup

yuerliang的专栏 4819

android.view.ViewGroup$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams

今天在实现动态改变布局的时候,报了个Error 仔细去看了下代码,发现自己真的太粗心大意了,记下来,方便日后翻阅。 原代码: ll_Pop_Params = ll_pop.getLayoutParams(); img_Product_Params = img_product_large.getLayoutParams(); ll_Pop_Params.width = (in

风华是一指流砂的专栏 2645

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.wid

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams       在代码里面改变布局的宽高,直接报错。通过查资料。原来如果你要将一个view添加到另一个布局中或者为这个view重新设定

不在状态的博客 1583

解决 android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

解决方法: 第一行中cannot be cast to 后面的layoutparams就是你要的真正的layoutparams,比如这个 android.widget.FrameLayout$LayoutParams是错误的,而cannot be cast to后面的android.widget.AbsListView$LayoutParams是对的

jinjin_15的博客 5481
上一篇: 完美配置Tomcat的HTTPS
下一篇: Android版本和API Level对应关系
focusjava
博客等级 码龄14年 127粉丝 528原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值