[Android Bug] ListView中Header, Footer无法隐藏(gone)的问题

本文介绍了一种在Android开发中ListView的Header或Footer视图隐藏时出现空白区域的问题及解决方案。通过调整视图的Padding和Visibility属性,可以有效地解决隐藏Header或Footer时留下的空白问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ListView中Header、Footer View应该是会应该遇到, 比如说,滚动到底部时,自动开始加载; 对于一些应用市场,会在Header中加上ViewFlipper做应用推荐(滚动的那种,好像很不少市场都有这个功能)。

添加时一般大家都会做如下处理:

[java]  view plain copy print ?
  1. ListView listView = xxxx;  
  2. listView.addHearderView(item_head);  
  3. listView.setAdapter(adapter);  

页面正常显示之后,此时如果用户刷新, 发现没有需要推荐的应用,这个时候,ListView的Header就需要隐藏了. 第一个想到的就是:
[java]  view plain copy print ?
  1. item_head.setVisibility(View.GONE);  

没错,内容确实消失了,可那块位置还是占用着,页面上显示一块空白区域!

 

关于解决方法,有的人说设置Header中子View为不可见; 有的人说设置Header中子View高度为0;但是我这边测试下来,没有效果..  

 

当前我的解决办法:

[java]  view plain copy print ?
  1. item_head.setPadding(0, -1 * headContentHeight, 0, 0);  
  2.         item_head.setVisibility(View.GONE);  

 

最后我想说,这问题感觉真的很蛋疼!在此记录一下,做备忘!

 

Android开发中,在使用listView时,我们会经常用到footerView或者headerView,给ListView添加的footer和header好多时候,会根据情况隐藏和显示。

因为footer和header使用删除和添加的方法总感觉不好。

而直接设置footer和header中的view为GONE时,虽然内容不显示了,但是这块区域还是会被占用。

经过各种方法测试,最后得出一个可以完美解决该问题的方法,如下代码:

this.footerLayout.setVisibility(View.GONE);
this.footerLayout.setPadding(0, -footerLayout.getHeight(), 0, 0);

意思就是把内容往上移动View的高度。

当然,在需要显示的时候,还要设置回来(做一个if  else处理即可)

this.footerLayout.setVisibility(View.VISIBLE);
this.footerLayout.setPadding(0, 0, 0, 0);

参考:

http://stackoverflow.com/questions/4317778/hide-footer-view-in-listview

http://blog.sina.com.cn/s/blog_70b9730f01014sgm.html

 

转载于:https://www.cnblogs.com/xgjblog/p/4554845.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值