在使用ListView的header和footer的过程中,如果需要动态的显示和隐藏header和footer的话,以前以为直接setVisibility中的View.GONE就可以。但是在实际使用中发现并不是这样的。直接设置GONE后,虽然元素是隐藏了,但是还是占用着那个区域。感觉就像View.INVISIBILE一样的效果了。后来在网上查找后发现。只要给footer再加上一个layout或者是父级的view就可以了。
例如:(示例代码,header同理)
1
2
3
|
private
ListView listView =
new
ListView(context);
private
TextView footer =
new
TextView(context);
|
然后直接
1
2
3
|
listView.addFooterView(footer);
footer.setVisibility(View.GONE);
|
这样的话,是不行的。需要
1
2
3
4
5
6
7
|
LinearLayout footerParent =
new
LinearLayout(context);
footerParent.addView(footer);
listView.addFooterView(footerParent);
footer.setVisibility(View.GONE);
|
这样就可以达到真正想要的效果了。
在知道这个效果之前,都是用remove和add方法,比较郁闷。这样的方式感觉是很迂回的,而且还得加多一个boolean的变量来判断。