Android初级教程_用ExpandableListView实现类似QQ好友列表

我们知道QQ好友列表分类使用ExpandableListView实现的,但是它在此基础上做改进,如打开分组,滑动时组标题会悬浮在最上端.

方便用户关闭分组.效果类似于下图:

Android初级教程_用ExpandableListView实现类似QQ好友列表_第1张图片Android初级教程_用ExpandableListView实现类似QQ好友列表_第2张图片


Android初级教程_用ExpandableListView实现类似QQ好友列表_第3张图片


实现代码如下所示:

[java] view plain copy
  1. @Override  
  2.     public void onScroll(AbsListView view, int firstVisibleItem,  
  3.             int visibleItemCount, int totalItemCount) {  
  4.         //防止三星,魅族等手机第一个条目可以一直往下拉,父条目和悬浮同时出现的问题  
  5.         if(firstVisibleItem==0){  
  6.             view_flotage.setVisibility(View.GONE);  
  7.         }  
  8.         // 控制滑动时TextView的显示与隐藏  
  9.         int npos = view.pointToPosition(00);  
  10.         if (npos != AdapterView.INVALID_POSITION) {  
  11.             long pos = expandableList.getExpandableListPosition(npos);  
  12.             int childPos = ExpandableListView.getPackedPositionChild(pos);  
  13.             final int groupPos = ExpandableListView.getPackedPositionGroup(pos);  
  14.             if (childPos == AdapterView.INVALID_POSITION) {  
  15.                 View groupView = expandableList.getChildAt(npos  
  16.                         - expandableList.getFirstVisiblePosition());  
  17.                 indicatorGroupHeight = groupView.getHeight();  
  18.             }  
  19.               
  20.             if (indicatorGroupHeight == 0) {  
  21.                 return;  
  22.             }  
  23.             // if (isExpanded) {  
  24.             if (count_expand > 0) {  
  25.                 the_group_expand_position = groupPos;  
  26.                 group_content.setText(groupData.get(the_group_expand_position)  
  27.                         .get("group_text"));  
  28.                 if (the_group_expand_position != groupPos||!expandableList.isGroupExpanded(groupPos)) {  
  29.                     view_flotage.setVisibility(View.GONE);  
  30.                 } else {  
  31.                     view_flotage.setVisibility(View.VISIBLE);  
  32.                 }  
  33.             }  
  34.             if (count_expand == 0) {  
  35.                 view_flotage.setVisibility(View.GONE);  
  36.             }  
  37.         }  
  38.   
  39.         if (the_group_expand_position == -1) {  
  40.             return;  
  41.         }  
  42.         /** 
  43.          * calculate point (0,indicatorGroupHeight) 
  44.          */  
  45.         int showHeight = getHeight();  
  46.         MarginLayoutParams layoutParams = (MarginLayoutParams) view_flotage  
  47.                 .getLayoutParams();  
  48.         // 得到悬浮的条滑出屏幕多少  
  49.         layoutParams.topMargin = -(indicatorGroupHeight - showHeight);  
  50.         view_flotage.setLayoutParams(layoutParams);  
  51.     }  

有的手机品牌不一样可能会出现如下情况:

Android初级教程_用ExpandableListView实现类似QQ好友列表_第4张图片


所以需要加上如下代码:

[java] view plain copy
  1. //防止三星,魅族等手机第一个条目可以一直往下拉,父条目和悬浮同时出现的问题  
  2.         if(firstVisibleItem==0){  
  3.             view_flotage.setVisibility(View.GONE);  
  4.         }  


--------------------------------------------------------------------------------


最近有些网友需要代码,现在附上下载地址.http://download.csdn.net/detail/johnny901114/4513242


你可能感兴趣的:(android)