当前位置: 首页 > news >正文

如何实现可动态调整隐藏header的listview

(转自:http://blog.sina.com.cn/s/blog_70b9730f01014sgm.html)

需求:根据某种需要,可能需要动态调整listview的页眉页脚,譬如将header作为显示板使用。

难点:listView.addHeaderView()方法必须在setAdapter()方法前调用,否则就会抛异常。至于为什么会抛异常,查看下ListView的源代码即可发现。因此,在设置HeaderView之后又想将headerView移除或者隐藏,则需要绕很大的弯子:将adapter保存起来-移除headerView-(或者更换headerview)-再将adapter设置上去。
 
隐藏headerview思路:使用View.GONE属性进行隐藏
尝试1.itemView结构如下:
1 <LinearLayout android:id="@+id/item_root"
2     android:layout_width="fill_parent"
3     android:layout_height="50dip"
4     android:orientation="vertical" >
5 <TextView  android:id="@+id/tv_1" />
6 <TextView  android:id="@+id/tv_2" />
7 </LinearLayout >
按道理,最后一句应该可以起到隐藏headerView的目的,但实际效果(魅族MX上测试发现),item_root的地方的确没有控件了,但item_root占用的50dip高度还在,即原来headerView的地方变成了一片空白区域!和View.INVISIBILE效果一样了,汗死!
 
 继续尝试如下,修改itemView的结构:
1 <LinearLayout android:id="@+id/item_root"
2     android:layout_width="fill_parent"
3     android:layout_height="50dip"
4     android:orientation="vertical" >
5  <LinearLayout android:id="@+id/item_container"
6 <TextView  android:id="@+id/tv_1" />
7 <TextView  android:id="@+id/tv_2" />
8  </LinearLayout>
9 </LinearLayout >
此结构较之前的结构增加了一个多余的Layout(item_container)来囊括item内部控件。此时,如果在item_container .setVisibility(View.GONE)则可以完美实现隐藏HeaderView的目的!
结论:View.GONE属性貌似不作用在根Layout上。
 
新的问题:
如果在item_root上使用了Shape背景,且此背景存在MinSize,那么此方法又失效了。。。
规避处理:如果的确必须要在HeaderView上添加背景background的话,那么请将background设置在item_container上吧,不要设置在item_root上,如此就可以规避新的问题了。

相关文章:

  • GeoGlobe Server运维
  • redis之sentinel
  • Linking different libraries for Debug and Release builds in Cmake on windows?
  • java中final关键字的总结
  • TCP/IP 网络编程(六)
  • Android开发框架--AndroidAnnotations(一)
  • 图片缓存负载
  • 最大流问题
  • 它们的定义app.config中间section节点和在执行中使用
  • 如何让mysql的自动递增的字段重新从1开始呢?(
  • read by other session的优化记录
  • sql Sever的存储过程转换为mysql的
  • 7月21日13家中国域名商(国际域名)解析量报告
  • NoSQL精粹读书笔记-第1章
  • iOS开发-App Icons的尺寸大小
  • ES6指北【2】—— 箭头函数
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 2019年如何成为全栈工程师?
  • 78. Subsets
  • C# 免费离线人脸识别 2.0 Demo
  • Debian下无root权限使用Python访问Oracle
  • dva中组件的懒加载
  • ES6之路之模块详解
  • IDEA常用插件整理
  • js
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux链接文件
  • mockjs让前端开发独立于后端
  • nginx 配置多 域名 + 多 https
  • python学习笔记 - ThreadLocal
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Terraform入门 - 1. 安装Terraform
  • Web设计流程优化:网页效果图设计新思路
  • XML已死 ?
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 从输入URL到页面加载发生了什么
  • 来,膜拜下android roadmap,强大的执行力
  • 批量截取pdf文件
  • 前端面试之闭包
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 深入浅出Node.js
  • 我与Jetbrains的这些年
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 转载:[译] 内容加速黑科技趣谈
  • 阿里云ACE认证学习知识点梳理
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #FPGA(基础知识)
  • #QT(串口助手-界面)
  • #stm32驱动外设模块总结w5500模块
  • $L^p$ 调和函数恒为零
  • (2)MFC+openGL单文档框架glFrame
  • (第61天)多租户架构(CDB/PDB)