如何从 ExpandableListView 的子项中删除分隔符?
Posted
技术标签:
【中文标题】如何从 ExpandableListView 的子项中删除分隔符?【英文标题】:How to remove the divider from the children of an ExpandableListView? 【发布时间】:2018-06-06 19:25:52 【问题描述】:我在 android 中做多项选择题。为此,我正在使用可扩展列表视图。我不想在子视图之间以及子视图和父视图之间显示空格(分隔符)。但我想要不同的可扩展列表视图之间的分隔线。我进行了很多搜索,但我发现在子视图之间添加了透明颜色,但它仍然显示子视图之间的空间。那么有什么方法可以删除子视图之间的空间。这是我的可扩展列表视图的 xml 代码。
<ExpandableListView
android:id="@+id/list_single_choice_questions"
android:layout_
android:layout_
android:dividerHeight="5dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:divider="#ffffff"
android:childDivider="#00000000"/>
【问题讨论】:
【参考方案1】:android:divider
选择父可绘制对象或android:footerDividersEnabled
/ android:headerDividersEnabled
可能是您正在寻找的父视图。这些都是继承自 ListView 父级。
至于子视图,我们可以查看 Java 方法以编程方式对其进行设置,请参阅 Android docs on Expandable List。例如 setChildDivider() :
设置将在相邻的每个孩子附近绘制的可绘制对象 列表。这将使用与正常分隔线相同的高度绘制 (setDivider(Drawable)) 或者如果它没有固有高度,则 高度由 setDividerHeight(int) 设置。
因此使用的高度由setDividerHeight()
或固有高度设置。
除此之外,您可以更改子视图的 xml 布局以使每个视图之间的空间更小。
<LinearLayout
android:id="@+id/child_list_item"
android:layout_
android:layout_
<!--no padding or margin-->/>
编辑:
您可以尝试像这样创建childDividerShape
可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:/>
</shape>
然后将其设置为android:childDivider
属性。
...
android:childDivider="@drawable/childDividerShape"
...
【讨论】:
没有任何效果...当我添加 android:divider=0dp 时,它将从孩子、父母和多个可扩展视图中删除空间。我只想从子视图中删除空间。我尝试以编程方式进行,但这也没有用。 抱歉,我更新了答案并进行了编辑,看看是否有帮助! 感谢您的回复。我之前也尝试过,但没有成功。要从子视图中删除空间,我必须将分隔符设置为 0dp。这也会从不同的可展开视图中删除空间。【参考方案2】:在 xml 文件中的 ExpandableListView 中添加以下两行
android:divider="@null"
android:dividerHeight="0dp"
【讨论】:
以上是关于如何从 ExpandableListView 的子项中删除分隔符?的主要内容,如果未能解决你的问题,请参考以下文章
如何在expandablelistview中折叠组视图上方和下方的所有子视图?
Android - 如何在 Android 的 Expandable ListView 的子视图下添加另一个视图?
如何从 ExpandableListView 的子项中删除分隔符?
如何为自定义 ExpandableListView 调用 notifyDataSetChanged?