Android ListView的HeaderView与FooterView的布局大小与动态显示问题

注意:HeaderView与FooterView添加至listview的时候,应在设置适配器之前进行操作。

需求:根据关键字查询岛屿的时候,如果没有相应的匹配结果,需要展示暂无数据及图片。

实现方式1:推荐岛屿的无数据层与搜索岛屿的无数据层相互独立。listview所在的布局的root为帧布局,在顶层放置无数据层,该层距顶部的距离为搜索框的高度。当无搜索结果的时候让该层显示,否则让该层消失。

Q1:虽然搜索无相应数据时无数据层展示了出来,但是当在无数据层上下滑动的时候搜索框依然会跟随手指进行移动,时隐时现。这种感觉很是不好。

A1:在代码中向无数据层添加触摸监听,消费发生在无数据层上的一切事件。

Q2:手指定位在搜索框上滑动的时候,搜索框依然会跟随手指进行移动,时隐时现。

A2:换思路...于是就有了实现方式2。

实现方式2:将搜索无结果的无数据层作为listVieww的footerview,进行动态的显示与隐藏。

Q1:footerview的布局文件中,写的root的高为match_parent,但是显示出来的时候仅有差不多一个item的高度,不能填充空白区域。

A1:代码中动态调整布局的高度,这时候就需要根据手机的宽度和高度与搜索框的高度的差值进行相应判断,合理赋值。

Q2:使用setVisibility()方法对footerview进行动态展示与隐藏的时候,发现没有效果。

A2:问百度,发现了这里。

总结

  • HeaderView与FooterView的宽高最好在布局文件中就以数值确定下来,全屏需用代码方式设置。
  • 使用setVisibility()方法进行动态展示与隐藏的话受用对象应该为次root(HeaderView与FooterView皆是)。

你可能感兴趣的:(Android ListView的HeaderView与FooterView的布局大小与动态显示问题)