Android中ExpandableListView常用属性总结

ExpandableListView的常用属性总结,以及一些样式的具体实现

divider

这个属性用于设置父类之间的分割线样式,具体的设置见childDivider。

childDivider

这个属性是用来设置同一个父项下,子类之间的分割线的样式,文档的描述是:Drawable or color that is used as a divider for children. 也就是说可以是drawable类型或者是color类型的资源。默认的分割线大概是高度为1px,颜色为google在material design中推荐的#1E000000。所以如果只是设置颜色的话,仅仅只是改变分割线的颜色。如果使用drawable资源,似乎不能使用图片来作为子项之间的分割线,只能使用自定义的drawable资源。而且在自定义的drawable资源中,对高度的设置是没有用的,对其它属性的设置会生效。有一点要强调的是,当子项展开时,它的父项与子项之间的分隔条会变为子项之间的分割线样式,子项未展开时,父项之间的分割线按divider定义的样式,没有定义就按默认的样式。下面举几个例子:

初始状态:


改变childDivider的属性:

android:childDivider="@color/blue_700"
效果图:


android:childDivider="@drawable/child_divider"
child_divider.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="@color/red_700"/>
    <corners
        android:radius="3dp"/>
</shape>
这里为了显示出圆角的效果,把分割线的高度设置为5dp:

android:dividerHeight="5dp"
效果图:



注意:不管是divider还是childDivider,如果需要将分割线去掉的时候,都不要将这个属性设置为@null,如下所示:

android:divider="@null"
android:childDivider="@null"
这样设置会出问题,虽然在Android Studio中显示这样写没有问题,但如果是设置childDivider为@null,运行时点击父项会报错:

错误信息下面还有,太长了就不截图了,所以如果设置childDivider为@null,运行时点击父项会报空指针错误,如果设置divider为@null的时候,运行时不会报错,但是会出现父列表项显示不全的问题:


如图所见,本来不应该出现滚动条,手机屏幕是足以将整个列表项显示完的。所以,如果需要使分割线消失的话,不要将这两个属性设置为@null,把它们的颜色设置为与背景颜色相同的颜色即可。

还有一点,divider和childDivider之间并不会相互覆盖,比如设置了divider但没有设置childDivider,不会使childDivider的样式与divider的样式相同,而是会使用默认的样式,反之亦然

dividerHeight

用于设置分割线的高度

groupIndicator

这个属性是用于控制父项前面的小箭头用的,如果想要用自己的图片替换掉那个箭头可以这样写:

android:groupIndicator="@drawable/picture"
在Android Studio中用drawable和mipmap都可以

如果想要去掉那个小箭头,可以写:

android:groupIndicator="@null"

indicatorLeft

箭头或者自己设置的图片的右边框距离手机左边边缘的距离,类似于marginLeft

indicatorStart

箭头或者自己设置的图片的左边框距离手机左边边缘的距离,类似于marginLeft

以上两个属性相结合可以使箭头或自己设置的图片变大变小或者翻转,因为控制了箭头或图片的左右边框

indicatorRight和indicatorEnd

暂时还用不上,因为箭头一般在列表的左边,使用方法应该和上面两个方法差不多

childIndicator

用于设置子项前显示的图标,不设置的话默认是没有图标的

childIndicatorStart、childIndicatorLeft、childIndicatorEnd、childIndicatorRight

用法见indicatorStart、indicatorLeft、indicatorEnd、indicatorRight

关于父项和子项前面的图标这个问题,觉得还是在控件中设置为不可见然后在父项和子项的布局中再加上会比较好,因为父项和子项的布局是没有考虑前面的图标,按一个完整的布局来考虑的,这样就会出现遮盖住图标的情况。如果想要有图标的话,子项设置比较简单,父项因为下拉收起列表的时候图标需要有变化(上下翻转),所以需要给父项的点击设置一个监听器,除了拉下列表,还有图标要旋转180度。关于ExpandableListView的逻辑实现可参考另外一篇文章http://blog.csdn.net/sysukehan/article/details/51960473

关于ExpandableListView的属性就介绍到这里,如果以后有新的属性用到再来更新这篇文章


本篇文章中使用到的代码都已上传至github:https://github.com/sysukehan/AndroidTests.git,其中的ExpandableListViewTest模块。

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值