先来看看今日完成的效果:
本篇涉及到一些权限申请的问题,我就直接在上一章的项目中写的Android 拍照/录像/文件选取/获取视频第一帧(含完整 Demo)
经典分析
这个效果我是是采用 RecyclerView 多布局配合GridLayoutManager()管理器来完成的效果
- 红色: 布局一
- 黄色: 布局二
点击黄色按钮的时候,拉起图库,选取图片,然后添加到布局一中
当红色布局数据 == 9 时,那么就隐藏掉最后黄色的布局即可
点击底部按钮的时候,显示出 RecyclerView 所有数据即可
本篇 RecyclerView 采用的适配器是BaseQuickAdapter多布局
在写这个小项目中遇到的问题
RecyclerView 的item 通过 GONE 隐藏的时候,虽然可以隐藏,但是还会占据位置
众所周知:
- VIEW.GONE View 隐藏,不占据位置
- View.VISIBLE View显示
- View.INVISIBLE View 隐藏,占据位置
解决:
- 第一步: item 布局使用 ConstraintLayout包裹
- 第二步:(代码来自于网络)
//防止隐藏item出现空白
//isVisible true 显示 false 不显示
//itemView 传入的是根布局
private fun setVisibility(isVisible: Boolean, itemView: View) {
val param = RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
if (isVisible) {
param.height = ConstraintLayout.LayoutParams.WRAP_CONTENT// 这里注意使用自己布局的根布局类型
param.width = ConstraintLayout.LayoutParams.MATCH_PARENT// 这里注意使用自己布局的根布局类型
itemView.visibility = View.VISIBLE
} else {
param.height = 0
param.width = 0
itemView.visibility = View.GONE
}
itemView.layoutParams = param
}
复制代码
为什么要这么干:
即使它占据位置,但是把它的宽高设置 0,那么它也是不显示的
这个小项目比较简单,大家直接下载代码来看看吧~
猜你喜欢:
原创不易,您的点赞就是对我最大的支持!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END