ListView的FooterView一般用来给用户展示一些提示信息。
正常情况下,是这么使用的。代码例如以下:
// footerfooterLayout = 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的外层”套“一个父容器。
代码例如以下:
// footerfooterLayout = 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 footerrefreshableView.addFooterView(footerLayoutHolder);从上面的代码能够看出。在创建了footerLayout对象之后。又创建了一个FrameLayout的对象。叫footerLayoutHolder。然后用footerLayoutHolder对象去”包裹“footerLayout。
这样,假设想要控制FooterView的显示状态,直接调用footerLayout的setVisibility()方法就可以。
// 显示footerLayout.setVisibility(View.VISIBLE);// 隐藏footerLayout.setVisibility(View.GONE);