我有一个自定义的3级ExpandableListView
,其中包含2个自定义ExpandableListAdapter
。
在ParentAdapter
内部getChildView
我创建了一个CustomExpandableListView
的实例,并将ChildAdapter
设置为:{/ p>
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
CustomExpandableListView subObjects = (CustomExpandableListView) convertView;
if (convertView == null) {
subObjects = new CustomExpandableListView(activity);
}
ChildAdapter adapter = new ChildAdapter(activity, item, subObjects);
subObjects.setAdapter(adapter);
return subObjects;
}
一些屏幕截图:
这是我隐藏中国地区时得到的结果:
这一点在扩展时:
所以我的ExpandableListView
仅占用了屏幕的一部分(我用红线标记了它),其他东西消失了,我必须滚动才能看到它。只有当我向Lvl 1(亚洲和欧洲)添加元素时,我的列表才会垂直扩展。我理解为什么 - 因为它们是标准ExpandableListView
我知道如何删除上边距和左边距 - 我在布局中设置了填充。
但是我如何强迫CustomExpendableListView
垂直展开呢?
这是我的CustomExpendableListView:
public class CustomExpandableListView extends ExpandableListView {
public CustomExpandableListView(Context context) {
super(context);
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec(990, MeasureSpec.AT_MOST);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(1600, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
在我的activity_main
布局中,我只有一个RelativeLayout
,宽度和高度都处于match_parent
状态。
这是我在 MainActivity中初始化CustomExpandableListView
的方法:
RelativeLayout parent = (RelativeLayout) findViewById(R.id.relativeContainer);
list = new CustomExpandableListView(this);
ParentAdapter adapter = new ParentAdapter(this, objectsLvl1);
list.setAdapter(adapter);
答案 0 :(得分:0)
嗯,实际上我找到了一些解决方案。
我已将ExpandableListView
放入RelativeLayout
activity_main
内。{/ p>
改变了 MainActivity:
中的实现ExpandableListView list = (ExpandableListView) findViewById(R.id.expandableListView_Parent);
if (list != null) {
ParentAdapter adapter = new ParentAdapter(this, objectsLvl1);
list.setAdapter(adapter);
}
这解决了我的问题,现在我有一个全屏ExpandableList
。
但如果有人告诉我如果我想通过自己的CustomExpandableList
做什么,那将会很好。因为我仍然不知道该怎么做。