带悬停标题的ExpandableListView
带悬停标题的ExpandableListView
1. 需求说明
在某一个分组内部滚动时,要求分组标题悬停,当滚出该分组范围时,把标题顶出去,悬停下一个分组的标题。点击悬停的一级列表能正常收缩展开。
本文主要借鉴
下面整理本地实现过程。
2. 实现原理
悬停标题是画上去的,而不是加到view hierarchy里去,具体根据滚动的情况确定如何画。
自定义控件,该控件继承ExpandableListView
类,并有一个View
成员变量,用以表示悬停的一级列表。
3. ExpandableListView的使用简介
步骤简述:
ExpandableListView
的布局- 要显示的数据
- 一级列表和二级列表的布局
ExtendableListViewAdapter
自定义适配器,为ExpandableListView
提供数据- Activity调用
- 绑定
ExpandableListView
和ExtendableListViewAdapter
- 加入点击监听
详细可参见另一篇
4. 自定义控件简介
带悬停标题的ExpandableListView
是自定义控件,在实现复杂的代码之前,先了解下自定义控件。
4.1 自定义View
的步骤
- 布局
- 自定义
View
的属性 - XML或Java代码控制布局
- 测量——
onMeasure(int,int)
(该函数可重写可不重写,具体看需求) - 布局——
onLayout(boolean,int,int,int,int)
- 绘制——
onDraw(Canvas canvas)
- 测量——
- 自定义
- 处理逻辑
- 构造函数(获得
View
属性值,初始化等) - 自定义处理逻辑
- 事件响应(
onClick
,onScroll
等)
- 构造函数(获得
- 提供数据(数据和处理逻辑分开,Adapter)
- 使用
- layout
- Activity
4.2 Android自定义控件的三种实现方法
- 组合原生控件(用到的步骤最少)
- 自己绘制(用到的步骤最多)
- 继承原生控件
详细可参见另一篇文章
5. 自定义控件DockingExapandableListView
ExpandableListView选择了哪个group后,让它滑到该group
参见
ExpandableListView选择了哪个group后,让它滑到该group。。怎么做?
1 setSelectedGroup
自定义一级列表的展开箭头
1 | @Override |
参考文献
Android自定义ViewGroup(二)——带悬停标题的ExpandableListView
developer.android.com–ExpandableListView
二级菜单——ExpandableListView以及用RecyclerView实现
安卓的ExpandableListView的使用和优化
ExpandableListView选择了哪个group后,让它滑到该group。。怎么做?
Android自定义控件View(一)