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