Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
PinnedHeaderExpandableListView
提交
a8b73dd8
P
PinnedHeaderExpandableListView
项目概览
门心叼龙
/
PinnedHeaderExpandableListView
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PinnedHeaderExpandableListView
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a8b73dd8
编写于
5月 11, 2014
作者:
singwhatiwanna
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update README.md
上级
ad5ddd95
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
56 addition
and
1 deletion
+56
-1
README.md
README.md
+56
-1
未找到文件。
README.md
浏览文件 @
a8b73dd8
PinnedHeaderExpandableListView
==============================
##前言
Android中,大家都用过ListView,ExpandableListView等,也许你还用过PinnedHeaderListView,但是如果我说PinnedHeaderExpandableListView,你听过吗?还有可下拉的PinnedHeaderExpandableListView呢?没听过也不要紧,本文就是介绍这个东西的,为了让大家有更直观的了解,先上效果图。通过效果图可以看出,首先它是一个ExpandableListView,但是它的头部可以固定,其次,在它的上面还有一个头部可以来回伸缩,恩,这就是本文要介绍的自定义view。为了提高复用性,这个效果我分成来了2个view来实现,第一个是PinnedHeaderExpandableListView来实现头部固定的ExpandableListView,第二个view是StickyLayout,这个view具有一个可以上下滑动的头部,最后将这2个view组合在一起,就达到了如下的效果。
PinnedHeaderExpandableListView
![
mahua
](
http://img.blog.csdn.net/20140511151546843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luZ3doYXRpd2FubmE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
)
##接口
```
java
public
interface
OnHeaderUpdateListener
{
/**
* 采用单例模式返回同一个view对象即可
* 注意:view必须要有LayoutParams
*/
public
View
getPinnedHeader
();
public
void
updatePinnedHeader
(
int
firstVisibleGroupPos
);
}
public
interface
OnGiveUpTouchEventListener
{
public
boolean
giveUpTouchEvent
(
MotionEvent
event
);
}
```
##如何使用
让你的activity实现OnHeaderUpdateListener, OnGiveUpTouchEventListener两个接口,
分别为PinnedHeaderExpandableListView中如何绘制和更新固定的头部以及StickyLayout中content何时放弃事件处理。
```
java
@Override
public
View
getPinnedHeader
()
{
if
(
mHeaderView
==
null
)
{
mHeaderView
=
(
ViewGroup
)
getLayoutInflater
().
inflate
(
R
.
layout
.
group
,
null
);
mHeaderView
.
setLayoutParams
(
new
LayoutParams
(
LayoutParams
.
MATCH_PARENT
,
LayoutParams
.
WRAP_CONTENT
));
}
return
mHeaderView
;
}
@Override
public
void
updatePinnedHeader
(
int
firstVisibleGroupPos
)
{
Group
firstVisibleGroup
=
(
Group
)
adapter
.
getGroup
(
firstVisibleGroupPos
);
TextView
textView
=
(
TextView
)
getPinnedHeader
().
findViewById
(
R
.
id
.
group
);
textView
.
setText
(
firstVisibleGroup
.
getTitle
());
}
@Override
public
boolean
giveUpTouchEvent
(
MotionEvent
event
)
{
if
(
expandableListView
.
getFirstVisiblePosition
()
==
0
)
{
View
view
=
expandableListView
.
getChildAt
(
0
);
if
(
view
!=
null
&&
view
.
getTop
()
>=
0
)
{
return
true
;
}
}
return
false
;
}
```
##许可协议
采用MIT共享协议发布
##更详细的介绍
[
可下拉的PinnedHeaderExpandableListView的实现
](
http://blog.csdn.net/singwhatiwanna/article/details/25546871
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录