ExpandableListView(一)替换系统默认的箭头
2014-05-29 20:40
323 查看
转载至:http://blog.csdn.net/dawanganban/article/details/11727051
很多朋友可能在android开发中,用过ExpandableListView这个组件,这个组件功能强大,比传统的ListView有好多优势。然而在开发中,我相信有好多人,包括我个人都会遇到下面的一些问题:
1。如何替换ExpandableListView的默认箭头
解决方法:在配置文件中有个android:groupIndicator属性,将其设置为:你的selector,例如:android:groupIndicator="@drawable/lt_expandablelistviewselector"
lt_expandablelistviewselector为:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_expanded="true" android:drawable="@drawable/lt_open2" />
<item android:drawable="@drawable/lt_norml2" />
</selector>
lt_open2和lt_norml2分别是两张不同状态的图片
ExpandableListView的整个布局
<ExpandableListView
android:divider="@drawable/lt_listview_line"
android:childDivider="@drawable/lt_listview_line"
android:cacheColorHint="#f5f5f5"
android:background="#f5f5f5"
android:id="@+id/citylist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:listSelector="@drawable/lt_imglistselector"
android:groupIndicator="@drawable/lt_expandablelistviewselector"
/>
具体你要加载哪些数据,和哪些内容显示在ExpandableListView上,自由发挥吧,o(∩_∩)o 哈哈
上面的工作做完之后,运行一下,看看我的效果:
ExpandableListView(二)替换箭头图标被拉伸的问题
之前写过一篇替换系统默认图标的文章,之后又发现了问题,当替换成自己的图片之后,图片被拉伸了!为了解决这个问题,我几乎尝试了所有方法,结果都不理想
我试过的方法,在布局里,把textview上的内容字体改小点,勉勉强强能保证图标不被拉伸,但是这样做的话,只是应付差事,代码没有弹性,当需求给你一定的限制
条件时,这种方法不攻自破。
其实,我相信这种问题,一定会有好多种方法解决,鉴于本人功底比较弱,我在这个问题上,回归了本质,从图片着手,既然图片被拉伸了,为了不把图片做成9-path的,
于是我把图片做成9-path的,问题迎刃而解。(9-path图片不会的,可以参考一下网上教程)
看效果图
这是普通的图片,被拉伸了,非常的不美观
在改成9-path的图片后,效果如下:
ExpandableListView(三)只展开一个group,没有child不展开group
本文是自己在实践中,发现的问题。
有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group
在一个ExpandableListView,如何实现只展开一个group,方法如下:
mListView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
for (int i = 0; i < mAdapter.getGroupCount(); i++) {
if (groupPosition != i) {
mListView.collapseGroup(i);
}
}
}
});
效果图:
上图的效果,看上去很好,但是存在一个问题,虽然只展开了一个group,但是在点击下一个group的时候,该group的标题不会置顶,这就造成了一些困惑,为了解决这个问题,用到了下边的方法解决:
重写setOnGroupClickListener方法
首先要有一个sign,可以是int sign,用来记录group展开的状态
private int sign= -1;//控制列表的展开
重写onGroupClick方法
//只展开一个group的实现方法
mListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
// TODO Auto-generated method stub
if (sign== -1) {
// 展开被选的group
mListView.expandGroup(groupPosition);
// 设置被选中的group置于顶端
mListView.setSelectedGroup(groupPosition);
sign= groupPosition;
} else if (sign== groupPosition) {
mListView.collapseGroup(sign);
sign= -1;
} else {
mListView.collapseGroup(sign);
// 展开被选的group
mListView.expandGroup(groupPosition);
// 设置被选中的group置于顶端
mListView.setSelectedGroup(groupPosition);
sign= groupPosition;
}
return true;
}
});
运行,看一下效果:
至此,在只打开一个group的同时,标题置顶
最后,补充一下,在group没有child的情况下,不展开group
// 这里是控制如果列表没有孩子菜单不展开的效果
mListView
.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent,
View v, int groupPosition, long id) {
// TODO Auto-generated method stub
if (childData.get(groupPosition).isEmpty()) {// isEmpty没有
return true;
} else {
return false;
}
}
});
很多朋友可能在android开发中,用过ExpandableListView这个组件,这个组件功能强大,比传统的ListView有好多优势。然而在开发中,我相信有好多人,包括我个人都会遇到下面的一些问题:
1。如何替换ExpandableListView的默认箭头
解决方法:在配置文件中有个android:groupIndicator属性,将其设置为:你的selector,例如:android:groupIndicator="@drawable/lt_expandablelistviewselector"
lt_expandablelistviewselector为:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_expanded="true" android:drawable="@drawable/lt_open2" />
<item android:drawable="@drawable/lt_norml2" />
</selector>
lt_open2和lt_norml2分别是两张不同状态的图片
ExpandableListView的整个布局
<ExpandableListView
android:divider="@drawable/lt_listview_line"
android:childDivider="@drawable/lt_listview_line"
android:cacheColorHint="#f5f5f5"
android:background="#f5f5f5"
android:id="@+id/citylist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:listSelector="@drawable/lt_imglistselector"
android:groupIndicator="@drawable/lt_expandablelistviewselector"
/>
具体你要加载哪些数据,和哪些内容显示在ExpandableListView上,自由发挥吧,o(∩_∩)o 哈哈
上面的工作做完之后,运行一下,看看我的效果:
ExpandableListView(二)替换箭头图标被拉伸的问题
之前写过一篇替换系统默认图标的文章,之后又发现了问题,当替换成自己的图片之后,图片被拉伸了!为了解决这个问题,我几乎尝试了所有方法,结果都不理想
我试过的方法,在布局里,把textview上的内容字体改小点,勉勉强强能保证图标不被拉伸,但是这样做的话,只是应付差事,代码没有弹性,当需求给你一定的限制
条件时,这种方法不攻自破。
其实,我相信这种问题,一定会有好多种方法解决,鉴于本人功底比较弱,我在这个问题上,回归了本质,从图片着手,既然图片被拉伸了,为了不把图片做成9-path的,
于是我把图片做成9-path的,问题迎刃而解。(9-path图片不会的,可以参考一下网上教程)
看效果图
这是普通的图片,被拉伸了,非常的不美观
在改成9-path的图片后,效果如下:
ExpandableListView(三)只展开一个group,没有child不展开group
本文是自己在实践中,发现的问题。
有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group
在一个ExpandableListView,如何实现只展开一个group,方法如下:
mListView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
for (int i = 0; i < mAdapter.getGroupCount(); i++) {
if (groupPosition != i) {
mListView.collapseGroup(i);
}
}
}
});
效果图:
上图的效果,看上去很好,但是存在一个问题,虽然只展开了一个group,但是在点击下一个group的时候,该group的标题不会置顶,这就造成了一些困惑,为了解决这个问题,用到了下边的方法解决:
重写setOnGroupClickListener方法
首先要有一个sign,可以是int sign,用来记录group展开的状态
private int sign= -1;//控制列表的展开
重写onGroupClick方法
//只展开一个group的实现方法
mListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
// TODO Auto-generated method stub
if (sign== -1) {
// 展开被选的group
mListView.expandGroup(groupPosition);
// 设置被选中的group置于顶端
mListView.setSelectedGroup(groupPosition);
sign= groupPosition;
} else if (sign== groupPosition) {
mListView.collapseGroup(sign);
sign= -1;
} else {
mListView.collapseGroup(sign);
// 展开被选的group
mListView.expandGroup(groupPosition);
// 设置被选中的group置于顶端
mListView.setSelectedGroup(groupPosition);
sign= groupPosition;
}
return true;
}
});
运行,看一下效果:
至此,在只打开一个group的同时,标题置顶
最后,补充一下,在group没有child的情况下,不展开group
// 这里是控制如果列表没有孩子菜单不展开的效果
mListView
.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent,
View v, int groupPosition, long id) {
// TODO Auto-generated method stub
if (childData.get(groupPosition).isEmpty()) {// isEmpty没有
return true;
} else {
return false;
}
}
});
相关文章推荐
- ExpandableListView(一)替换系统默认的箭头
- ExpandableListView(一)替换系统默认的箭头
- ExpandableListView(一)替换系统默认的箭头
- ExpandableListView(一)替换系统默认的箭头
- ExpandableListView替换系统默认的箭头
- ExpandableListView 去掉默认的箭头
- ExpandableListView(二)替换箭头图标被拉伸的问题
- expandableListview的默认箭头箭头怎样移到右边
- Android之ExpandableListView的各种效果(默认展开不合闭,自定义父栏目及箭头控制)
- ExpandableListView(一)替换系统默认的箭头
- ExpandableListView自带箭头图标去除和替换
- Android中替换ExpandableListView控件前面的箭头图标
- ExpandableListView,默认箭头放到右侧
- ExpandableListView去掉默认箭头和互斥展开
- ExpandableListView 去掉默认箭头,设置成别的图片
- 替换ExpandableListView右边箭头Group Indicator(小图标)
- Android之ExpandableListView的各种效果(默认展开不合闭,自定义父栏目及箭头控制)
- 替换ExpandableListView右边箭头Group Indicator(小图标)
- ExpandableListView去掉默认箭头和互斥展开
- ExpandableListView 去掉默认箭头 和 有按钮的时候无法展开