RecyclerView显示Item布局不一致

在自定义RecyclerAdapter的时候,在重写onCreateViewHolder方法是使用了
@Override
public H onCreateViewHolder(ViewGroup parent, int viewType) {
View view=View.inflate(context,layoutId,null);
return view;
}
进行生成布局,结果发现生成的布局没有LayoutParams。以前自定义View的时候发现,LayoutParams是由于ViewGroup生成的,因为这里添加的ViewGroup为null。所以并不会生成LayoutParams。结果在RecyclerView的getViewForPosition方法中检查了有没有LayoutParams如果没有的话就调用LayoutManager的generateDefaultLayoutParams生成默认的LayoutParames。代码段如下:
final ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();
final LayoutParams rvLayoutParams;
if (lp == null) {
rvLayoutParams = (LayoutParams) generateDefaultLayoutParams();
holder.itemView.setLayoutParams(rvLayoutParams);
} else if (!checkLayoutParams(lp)) {
rvLayoutParams = (LayoutParams) generateLayoutParams(lp);
holder.itemView.setLayoutParams(rvLayoutParams);
} else {
rvLayoutParams = (LayoutParams) lp;
}
而在LinearLayoutManager中generateDefaultLayoutParams方法实现如下。
/**
* {@inheritDoc}
*/
@Override
public LayoutParams generateDefaultLayoutParams() {
return new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}
最终会造成RecycleView的显示效果与布局文件不一致。后来使用了LayoutInflater来填充布局。
@Override
public H onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(layoutId, parent, false);
return getInstanceOfH(view);
}
查看LayoutInflater源码发现inflate最后的参数如果是false的话就不会将生成的View添加到parent。但是会根据parent产生相应的LayoutParams 。源码如下:
* @param attachToRoot Whether the inflated hierarchy should be attached to * the root parameter? If false, root is only used to create the * correct subclass of LayoutParams for the root view in the XML.
因为在onCreateViewHolder中产生的View不能由我们手动添加到RecycleView中所以最后的参数只能是false;
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# RecyclerView显示Item布局不一致
# RecyclerView显示Item
# Android RecyclerView滑动删除和拖动排序
# Android RecyclerView item选中放大被遮挡问题详解
# Android RecyclerView实现多种item布局的方法
# Android使用CardView作为RecyclerView的Item并实现拖拽和左滑删除
# Android中RecyclerView实现Item添加和删除的代码示例
# Android中RecyclerView的item宽高问题详解
# Android RecyclerView的Item点击事件实现整理
# Android 中RecyclerView多种item布局的写法(头布局+脚布局)
# Android RecyclerView自由拖动item的实现代码
# 自定义
# 使用了
# 就不
# 而在
# 希望能
# 如果没有
# 重写
# 谢谢大家
# 会将
# 显示效果
# 是由于
# inflate
# generateDefaultLayoutParams
# view
# return
相关文章:
,有什么在线背英语单词效率比较高的网站?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何选择网络建站服务器?高效建站必看指南
如何基于云服务器快速搭建网站及云盘系统?
制作网站外包平台,自动化接单网站有哪些?
怀化网站制作公司,怀化新生儿上户网上办理流程?
建站之星价格显示格式升级,你的预算足够吗?
Python lxml的etree和ElementTree有什么区别
建站VPS选购需注意哪些关键参数?
如何在企业微信快速生成手机电脑官网?
建站之星展会模版如何一键下载生成?
建站之星导航如何优化提升用户体验?
高防服务器如何保障网站安全无虞?
如何构建满足综合性能需求的优质建站方案?
Swift开发中switch语句值绑定模式
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
建站之星后台管理如何实现高效配置?
网站制作价目表怎么做,珍爱网婚介费用多少?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
高端云建站费用究竟需要多少预算?
如何规划企业建站流程的关键步骤?
建站之星如何取消后台验证码生成?
如何在阿里云域名上完成建站全流程?
黑客如何利用漏洞与弱口令入侵网站服务器?
,在苏州找工作,上哪个网站比较好?
学校为何禁止电信移动建设网站?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
深入理解Android中的xmlns:tools属性
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
制作旅游网站html,怎样注册旅游网站?
制作网站怎么制作,*游戏网站怎么搭建?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
网站制作员失业,怎样查看自己网站的注册者?
c# await 一个已经完成的Task会发生什么
招商网站制作流程,网站招商广告语?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
,怎么用自己头像做动态表情包?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
音乐网站服务器如何优化API响应速度?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
如何获取上海专业网站定制建站电话?
三星网站视频制作教程下载,三星w23网页如何全屏?
山东网站制作公司有哪些,山东大源集团官网?
如何通过WDCP绑定主域名及创建子域名站点?
如何用5美元大硬盘VPS安全高效搭建个人网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。