ListView中动态显示隐藏HeaderView和FooterView
ListView中动态显示和隐藏Header&Footer
解决思路: 直接设置HeaderView和FooterView.setVisibility(View.GONE)无效, 布局仍然存在, 需要给布局设置父布局, 然后通过控制子布局来显示隐藏布局.
1. 给最外层布局, 嵌套父布局, 通过控制子布局进而控制整个布局;
2. 给整个布局在代码中动态添加一个父布局, 然后头尾部添加父布局,可以直接操控该布局;
具体实现如下
1.什么是阴影效果
2.fading:渐变,衰退 fadingEdge:渐变边缘,衰退边缘 一、删除android ScrollView边界阴影方法方法
1) 在xml中添加:android:fadingEdge=”none”
2) 代码中添加:ScrollView.setHorizontalFadingEdgeEnabled(false); 二、删除ScrollView拉到尽头(顶部、底部),然后继续拉出现的阴影效果
适用于2.3及以上的 否则不用设置
android:overScrollMode="never"
除去ScrollVIew拉到尽头时再拉的阴影效果
如果需要动态的显示和隐藏footer的话,按照惯例,误以为直接通过setVisibility中的View.GONE就可以实现。但是在实际使用中发现并不是这样的。
例如,先加载footer布局:
private View mFooter; mFooter = LayoutInflater.from(this).inflate(R.layout.footer, null); //加载footer的布局
mListView.addFooterView(mFooter);
如果想动态隐藏这个footer,惯性思维是直接设置footer为gone:(其实这样做是不对的)
mFooter.setVisibility(View.GONE); //隐藏footer
实际上,直接设置GONE后,虽然元素是隐藏了,但是还是占用着那个区域,此时和View.INVISIBILE效果一样。
footer的正确使用方法如下:
1、方法一:
(1)布局文件:在footer布局文件的最外层再套一层LinearLayout/RelativeLayout,我们称为footerParent。
layout_footer_listview.xml:(完整版代码)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mFooterparent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:gravity="center"
android:orientation="vertical"
> <LinearLayout
android:id="@+id/mFooter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"> <TextView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:gravity="center"
android:text="查看更多"
android:textColor="#ff0000"
android:textSize="20sp"/>
</LinearLayout>
</LinearLayout>
(2)加载footer和footerParent的布局:
private View mFooter; //footer
private View mFooterParent; //footer的最外面再套一层LinearLayout mFooterParent = LayoutInflater.from(getActivity()).inflate(R.layout.footerparent_listview, null);//加载footerParent布局
mFooter = mFooterParent.findViewById(R.id.footer);
listView.addFooterView(mFooterParent); //把footerParent放到ListView当中 mFooterParent.setOnClickListener(MainActivity.this); //绑定监听事件,点击查看全部列表
(3)设置footer为gone:(不是设置footerParent为gone)
mFooter.setVisibility(View.GONE);
2、方法二:或者直接在代码中为footer添加footerParent也可以,如下:
private View mFooter; //footer
mFooter = LayoutInflater.from(getActivity()).inflate(R.layout.footer_listview, null);//加载footer布局 LinearLayout mFooterParent = new LinearLayout(context);
mFooterParent.addView(mFooter);//在footer的最外面再套一层LinearLayout(即footerParent)
listView.addFooterView(mFooterParent);//把footerParent放到ListView当中
当需要隐藏footer的时候,设置footer为gone:(不是设置footerParent为gone)
mFooter.setVisibility(View.GONE);
ListView中动态显示隐藏HeaderView和FooterView的更多相关文章
- ListView中动态显示和隐藏Header&Footer
		
ListView的模板写法 ListView模板写法的完整代码: android代码优化----ListView中自定义adapter的封装(ListView的模板写法) 以后每写一个ListView ...
 - ListView设置headerview和footerview
		
[简介]headerview就是通常看到的那种listview手势下滑露出上面的部分,下拉到一定位置,松手会开始请求网络数据,然后刷新listview的列表.footerview一般就是listvie ...
 - [Android Bug] ListView中Header, Footer无法隐藏(gone)的问题
		
ListView中Header.Footer View应该是会应该遇到, 比如说,滚动到底部时,自动开始加载: 对于一些应用市场,会在Header中加上ViewFlipper做应用推荐(滚动的那种,好 ...
 - Android 编程下 ListView 的 HeaderView 和 FooterView 不可选择点击
		
在 ListView 里,HeaderView 和 FooterView 也占一行,与其他的 item 一样,可以点击,有索引,HeaderView 的索引为0.如果要使这两项不可点击,可以使用下面的 ...
 - 【转】listView中,checkBox的显示和隐藏
		
原文网址:http://www.cnblogs.com/vicma/p/3460500.html 在listView中,每个item都有一个ChexBox,当显示的时候在listView外面设置一个按 ...
 - Android 5.X新特性之为RecyclerView添加HeaderView和FooterView
		
上一节我们讲到了 Android 5.X新特性之RecyclerView基本解析及无限复用 相信大家也应该熟悉了RecyclerView的基本使用,这一节我们来学习下,为RecyclerView添加H ...
 - Android GridView增加HeaderView和FooterView的实现
		
Android GridView增加HeaderView和FooterView的实现 做的项目中遇到一个问题,需要实现一个页面 页面的上面是一个自定义的View和GridView,当向下滚动屏幕的时候 ...
 - (转载)解决ListView中使用EditText所遇到的一些冲突
		
大家都知道在listView中使用editText,在输入过程中是有冲突的.今天稍微研究了一下这个问题,有一点点小小的心得和大家一起分享下. 首先建立一个最简单的demo,主界面就是一个ListVie ...
 - winform实现listview中combox
		
一.概要 因为要在项目中要在ListView中实现下拉框选择,用DataGrid的话,一个不美观,二个绑定数据麻烦,参考网上一种做法,就是单击ListView时,判断单击的区域,然后将Combox控件 ...
 
随机推荐
- 利用open MP获取计算机核心数量的方法
			
openMP是一款普遍通用的并行计算编程模型,使用它通常能够充分利用多核计算的优势. 以下是一种能够测试核心数量的方法: std::cout << "parallel begin ...
 - Secret of Chocolate Poles (Aizu1378——dp)
			
Select Of Chocolate Poles 题意:有一个竖直放置的高度为l cm的盒子,现在有三种方块分别为1cm的白块,1cm的黑块,k cm的黑块,要求第一块放进去的必须是黑色的,盒子最上 ...
 - ES6 基础学习
			
ECMAScript 6 标准入门 一.let和const let命令 let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效:是块级作用域,且let不允许 ...
 - 原来PHP对象比数组用更少的内存
			
一直以为php的数组更节省内存,从来没有测试过,今天因为要读取一个大配置文件作为pool.做了一次测试: 得出结论是 使用对象保存数据更好,花费的内存是数组array的1/4. 测试代码 class ...
 - log显示error时的堆栈信息理解和分析
			
error显示的log堆栈信息,是从最深层(最内层)的堆栈信息开始由内向外打印的. error显示的log堆栈信息,是从最深层(最内层)的堆栈信息开始由内向外打印的. error显示的log堆栈信息, ...
 - Android:隐藏ActionBar
			
在OnCreate函数中添加:getActionBar().hide();
 - 【JavaScript】正則表達式
			
正則表達式,也不是第一次与它见面了.在我们学习ASP.NET视频的时候,验证控件的那个实例中.就有提到过它. 那个时候.都是在控件的属性中自己设置的,用的原理就是正則表達式,当时得感觉就是方便,强大, ...
 - Ejb in action(四)——购物车实例演示有状态会话Bean
			
前面.我们介绍了一个入门实例.事实上那就是无状态回话Bean的经常使用情况. 上一篇文章中.我们介绍了无状态会话Bean和有状态会话Bean的相关概念.为了加深大家对它们的理解,我们一起来实现一个有状 ...
 - 【独立开发人员er Cocos2d-x实战 011】Cocos2dx 3.x命令行生成APK具体解释
			
Cocos2d-x 3.6项目打包生成apk安卓应用文件,搭建安卓环境的步骤有点繁琐.但搭建一次之后,以后就会很快捷! 过程例如以下: 一.下载安卓环境:搭建Android环境须要用到Android ...
 - Yum重装走过的坑
			
今天因为用yum方式安装mongo遇到报错,从而我选择卸载yum并重新安装. 我先选择了用rpm方式进行重装,从163的packages列表里面找到64位redhat6.5可以用的三个rpm包,安装过 ...