zoukankan      html  css  js  c++  java
  • 【问题汇总】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);



  • 相关阅读:
    设计模式-外观模式
    发生死锁怎么办
    设计模式-工厂模式
    设计模式-模板方法
    设计模式-命令模式(Command)
    设计模式-单例模式
    设计模式-装饰器模式
    CQRS之旅——旅程8(后记:经验教训)
    CQRS之旅——旅程7(增加弹性和优化性能)
    CQRS之旅——旅程6(我们系统的版本管理)
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5054376.html
Copyright © 2011-2022 走看看