我想在父元素之间放置divider。当我设置
android:divider="@drawable/divider"
android在父元素之间创建分隔符,但也在子元素之间创建分隔符。当我添加android:childDivider="@color/transparent"
android删除子元素之间的分隔符,但它们之间的空闲空间仍然存在。为什么?
我试过android:dividerHeight="0dp"
但没有发生任何事情。
我想在父元素之间设置分隔符,但我不希望子元素之间有任何分隔符或空格。
任何想法怎么做??
答案 0 :(得分:25)
为了从子视图中删除分隔符,而不是在可扩展列表中的父项之间删除分隔符:
在XML中的android:childDivider="#00000000"
属性中添加ExapandableListView
:
<ExpandableListView
android:id="@+id/elv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:childDivider="#00000000" />
有关详细信息,请参阅this page
答案 1 :(得分: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" />
答案 2 :(得分:4)
诀窍是为折叠组布局和最后一个子布局创建额外的view
。
collapse_group.xml:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="17sp"/>
<!-- this is the extra view-->
<View
android:layout_width="fill_parent"
android:layout_height="10dp"
android:background="@android:color/transparent"/>
</LinearLayout>
expanded_group.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="17sp"/>
<!-- no extra view-->
</LinearLayout>
并将相同的技术应用于子视图,为最后一个子视图插入额外视图
答案 3 :(得分:1)
我所做的是将ExpandableListView的分隔符设置为0,然后将“divider”组插入其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;
}
答案 4 :(得分:1)
expListView.setDividerHeight(10);
expListView.setChildDivider(getResources().getDrawable(
android.R.color.white));
答案 5 :(得分:1)
如果您只想删除子分隔符,一个简单的技巧是您可以创建一个与您的子项目背景颜色相同颜色的drawable。然后将其设置为子分隔符。
ShapeDrawable sd1 = new ShapeDrawable(new RectShape());
sd1.getPaint().setColor(YOUR CHILD ITEM BACKGROUND COLOR);
mExpListView.setChildDivider(sd1);
或使用xml:
android:childDivider="@color/child_bg_color"
答案 6 :(得分:0)
如果你想在ExpandableListView(Header)的父元素之间设置divider并且不希望在children和parent之间有分隔符,这显然是最自然的情况,那么你必须做以下事情:
在您的父xml文件中,在布局底部添加一个视图,其中包含您需要的分隔符高度和分隔符颜色。 例如:
在子xml文件中执行相同操作。在布局底部添加一个视图,其中包含您需要的分隔符高度和分隔符颜色。确保分隔符颜色和高度与父xml相同。
进入ExpandableListView Adapter方法 public View getGroupView(int groupPosition,boolean isExpanded, 查看convertView,ViewGroup parent) 像这样管理View分隔符的状态: 例如:
如果(isExpanded){ headerDividerView.setBackgroundColor(ContextCompat.getColor(上下文,R.color.darker_grey)); }其他{ headerDividerView.setBackgroundColor(ContextCompat.getColor(上下文,android.R.color.transparent)); }
BTW:在我的情况下,R.color.darker_grey是父母的背景色
从ExpandableListView xml中删除所有分隔线和分隔线高度。使ExpandableListView不具有分隔符和分隔符高度。 您可以使用这样的attrs:
机器人:groupIndicator = “@空” 机器人:childIndicator = “@空” 机器人:分隔=“@空” 机器人:dividerHeight = “0dp”
答案 7 :(得分:0)
我通过将两个视图分别添加到标题和另一个视图添加到子项来解决此问题,如下所示。
Header.xml
cv2.rectangle(face, (bottom_left, top_left), (top_right, bottom_right), (255, 0, 0), 3)
child.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>
现在将此代码添加到您的Adapter类中。这个想法是在组展开/折叠时显示/隐藏“视图”,在子项的最后一项上显示。
<?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>
答案 8 :(得分:-2)
像这样设置android:divider="@null"
没有为父母设置分隔符android:divider="2dp"
为父母设置分隔符
<ExpandableListView
android:id="@+id/expandable_list"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:divider="2dp"
android:groupIndicator="@drawable/group_indicator" />