ExpandableListView - 如何仅在父元素之间设置分隔符

Pla*_*lov 19 android parent expandablelistview divider

我想只在父元素之间放置divider.当我设置

android:divider="@drawable/divider"
Run Code Online (Sandbox Code Playgroud)android在父元素之间创建分隔符,但也在子元素之间创建分隔符.当我添加
android:childDivider="@color/transparent"
Run Code Online (Sandbox Code Playgroud)android删除子元素之间的分隔符,但它们之间的空闲空间仍然存在.为什么?我试过了
android:dividerHeight="0dp"
Run Code Online (Sandbox Code Playgroud) 但什么都没发生.

我想在父元素之间设置分隔符,但我不希望子元素之间有任何分隔符或空格.

任何想法怎么做?

Ama*_*Ray 25

为了从子视图中删除分隔符,而不是在可扩展列表中的父项之间删除分隔符:

添加android:childDivider="#00000000"ExapandableListViewXML中的属性:

<ExpandableListView
    android:id="@+id/elv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:childDivider="#00000000" />
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此页面


Rav*_*dav 5

赋予分割器颜色及其高度(当组折叠时分隔符将可见)

<ExpandableListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@color/color_black"
        android:dividerHeight="1dp"
        android:groupIndicator="@null" />
Run Code Online (Sandbox Code Playgroud)


MZa*_*kow 1

我所做的是将 ExpandableListView 的分隔符设置为 0,然后将“分隔符”组插入到它的 ExpandableListAdapter 中:

// To get dividers between the groups we add 'divider views' as if they were  
// themselves groups.
public int getGroupCount() {
// Actual groups are at even groupPositions, dividers at odd
    return (this.data.size() * 2) - 1;
}

public long getGroupId(int groupPosition) {
    if(groupPosition % 2 != 0) return R.id.divider;
    else return R.id.group;
}

public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    if(groupPosition % 2 != 0) {
        View divider = convertView;
        if(divider == null || divider.getId() != R.id.divider) {
            divider = this.inflater.inflate(R.layout.divider, null);
        }

        return divider;
    }

    View group = convertView;
    if(group == null || group.getId() != R.id.group) {
        group = this.inflater.inflate(R.layout.group, null);
    }

    return group;
}
Run Code Online (Sandbox Code Playgroud)