ListView的FooterView一般用来给用户展示一些提示信息。
正常情况下,是这么使用的。代码如下:
// footer footerLayout = new PullLoadingLayout(context, MODE_PULL_DOWN_TO_REFRESH, releaseLabel, pullLabel, refreshingLabel, isShowHeader); refreshableView.addFooterView(footerLayout);首先,创建一个FooterView对象,然后调用ListView的addFooterView()方法。这样,这个FooterView就被加载到了ListView的底部。
但是,存在一个问题,如果想要控制FooterView的可见状态,调用footerLayout.setVisibility(View.VISIBLE)或footerLayout.setVisibility(View.GONE)是不起作用的。
查阅了一些资料,很多人都遇见了这个问题,这应该是ListView的一个bug。
在footerLayout的外层”套“一个父容器。代码如下:
// footer footerLayout = new PullLoadingLayout(context, MODE_PULL_DOWN_TO_REFRESH, releaseLabel, pullLabel, refreshingLabel, isShowHeader); footerLayoutHolder = new FrameLayout(getContext()); footerLayoutHolder.addView(footerLayout, 0, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)); // add footer refreshableView.addFooterView(footerLayoutHolder);从上面的代码可以看出,在创建了footerLayout对象之后,又创建了一个FrameLayout的对象,叫footerLayoutHolder,然后用footerLayoutHolder对象去”包裹“footerLayout。
这样,如果想要控制FooterView的显示状态,直接调用footerLayout的setVisibility()方法即可。
// 显示 footerLayout.setVisibility(View.VISIBLE); // 隐藏 footerLayout.setVisibility(View.GONE);