【问题汇总】ListView的FooterView设置可见性的问题

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);



你可能感兴趣的:(问题汇总_solution)