android expandablelistview如何设置组和项目之间的空间

android expandablelistview如何设置组和项目之间的空间,android,android-layout,android-xml,Android,Android Layout,Android Xml,我有expandablelistview,我想在组项目之间添加填充(或边距),我在组项目上使用了margin botton,但现在它也应用于组项目及其子项,我想在组项目之间保留一个空格,而不是在组项目及其子项之间,我的工作方式如下: 主xml 组xml 子xml 因为您使用的是从BaseExpandableListAdapter扩展而来的adapter,所以您可以通过编程方式设置填充,在组未展开时将填充设置为组项,然后在组展开时删除填充,对于每个组,将填充设置为其中的最后一个子项 将填充

我有expandablelistview,我想在组项目之间添加填充(或边距),我在组项目上使用了
margin botton
,但现在它也应用于组项目及其子项,我想在组项目之间保留一个空格,而不是在组项目及其子项之间,我的工作方式如下:

主xml

组xml

子xml
因为您使用的是从
BaseExpandableListAdapter
扩展而来的
adapter
,所以您可以通过编程方式设置填充,在组未展开时将填充设置为组项,然后在组展开时删除填充,对于每个组,将填充设置为其中的最后一个子项

将填充设置为最后一个子项 在项目展开时将填充设置为组项目 注
我假设您正在为您的组和您的孩子使用arraylist,您只需根据您的结构将
组.get(groupPosition).getChilds().size()-1
替换为组的大小

如果您正在寻找更好的选项,只需添加

expandablelsv.setDividerHeight();

子指示器
之后,在我的情况下,它完全可以正常工作,尝试一下

检查child是否是最后一个,并在那里添加填充

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

    if (isLastChild) {
        convertView.setPadding(0, 0, 0, 30);
    }

     return convertView; 
}

我也有同样的问题,所以我想出了一个幼稚的解决办法。我所做的是添加到线性布局中,在可展开列表视图的父布局文件和子布局文件中具有相同的属性。 当点击一个组时,我使父布局文件的“线性布局”不可见,我的工作就完成了

组布局文件 这里lv包含线性布局的id

线性\u父\u常见问题解答


组布局文件。

我通过添加两个视图解决了这个问题,一个视图添加到标题,另一个视图添加到子项,如下所示

Header.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<RelativeLayout
    android:id="@+id/rl_header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/square_box"
    android:padding="@dimen/padding_10">

    <ImageView
        android:id="@+id/expandableIndicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_downarrow" />
</RelativeLayout>

<View
    android:id="@+id/view_hidden"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_below="@+id/rl_header"
    android:background="@android:color/transparent" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<RelativeLayout
    android:id="@+id/rl_childView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/square_box"
    android:padding="@dimen/padding_10">

    <TextView
        android:id="@+id/tv_startDate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:gravity="left"
        android:paddingTop="@dimen/padding_5"
        android:paddingBottom="@dimen/padding_5"
        android:text="Start Date \nSep. 23, 2019"
        android:textSize="@dimen/text_16" />

    <ImageView
        android:id="@+id/iv_arrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/right_arrow" />
</RelativeLayout>

<View
    android:id="@+id/view_hidden"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_below="@+id/rl_childView"
    android:background="@android:color/transparent" />
</RelativeLayout>

这两个属性有助于提供空间

android:divider="@android:color/transparent"
android:dividerHeight="8dp"

您正在使用从
BaseExpandableListAdapter
扩展而来的
adpater
吗?是的,您想要它的代码吗?请检查我的答案我已经寻找这个极其简单的解决方案一个小时了,碰巧很简单,您只需要知道它!谢谢大家!@PradeepSodhi函数用于获取特定组的子对象
expandablelsv.setDividerHeight();
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

    if (isLastChild) {
        convertView.setPadding(0, 0, 0, 30);
    }

     return convertView; 
}
<TextView
        android:id="@+id/expandable_faqparent_id"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_margin="2dp"
        android:layout_marginBottom="30dp"
        android:background="#ffffff"
        android:gravity="center"
        android:text="hello this is dummy text"
        android:textSize="20dp"
        android:textStyle="bold" />
<LinearLayout
    android:id="@+id/linear_parent_faq"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:background="#cfd8dc"
    android:layout_weight="0.06"
    android:orientation="vertical">
</LinearLayout>
<TextView
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:id="@+id/expandable_faq_child_id"
    android:text="DUMMY PARENT"
    android:background="#ffffff"
    android:gravity="center"
    android:elevation="2dp"/>
<LinearLayout
    android:id="@+id/linearfaq"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:background="#cfd8dc"
    android:orientation="vertical">
</LinearLayout>
lv.setVisibility(View.INVISIBLE);
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<RelativeLayout
    android:id="@+id/rl_header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/square_box"
    android:padding="@dimen/padding_10">

    <ImageView
        android:id="@+id/expandableIndicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_downarrow" />
</RelativeLayout>

<View
    android:id="@+id/view_hidden"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_below="@+id/rl_header"
    android:background="@android:color/transparent" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<RelativeLayout
    android:id="@+id/rl_childView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/square_box"
    android:padding="@dimen/padding_10">

    <TextView
        android:id="@+id/tv_startDate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:gravity="left"
        android:paddingTop="@dimen/padding_5"
        android:paddingBottom="@dimen/padding_5"
        android:text="Start Date \nSep. 23, 2019"
        android:textSize="@dimen/text_16" />

    <ImageView
        android:id="@+id/iv_arrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/right_arrow" />
</RelativeLayout>

<View
    android:id="@+id/view_hidden"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_below="@+id/rl_childView"
    android:background="@android:color/transparent" />
</RelativeLayout>
@Override
public View getGroupView(int listPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    String listTitle = (String) getGroup(listPosition);
    String listCount = "(" + getChildrenCount(listPosition) + ")";

    if (convertView == null) {
        LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.expandable_header, null);
    }
    View view_hidden = convertView.findViewById(R.id.view_hidden);

    if (isExpanded) {
        view_hidden.setVisibility(View.GONE);
    } else {
        view_hidden.setVisibility(View.VISIBLE);
    }

    return convertView;
}

@Override
public View getChildView(int listPosition, final int expandedListPosition,
                         boolean isLastChild, View convertView, ViewGroup parent) {
    final Medication medication = (Medication) getChild(listPosition, expandedListPosition);
    if (convertView == null) {
        LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.expandable_item, null);
    }

    View view_hidden = convertView.findViewById(R.id.view_hidden);
    if (isLastChild) {
        view_hidden.setVisibility(View.VISIBLE);
    } else {
        view_hidden.setVisibility(View.GONE);
    }

    return convertView;
}
android:divider="@android:color/transparent"
android:dividerHeight="8dp"