我正在创建一个自定义ExpandableListView
使用教程发现支持三个级别here http://androidcodesnips.blogspot.com/2011/09/three-level-expandable-list.html.
我的列表按预期工作并扩展/折叠。
我遇到的问题是,当用户按下某个项目时,Android 仅将每个项目的一部分识别为可点击区域,并且该区域是选择时唯一突出显示的部分。
如果您运行教程代码,或者查看下图,第二级和第三级背景应该占据整个宽度,就像第一级一样。
我尝试过设置LayoutParams
on my TextView
像这样调用电视:
tv.setLayoutParams(new ListView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
我希望背景和突出显示能够占据每个级别的视图的整个宽度。
我的所有代码都遵循教程,但如果有帮助,我可以发布具体的代码。
编辑:添加图像
如果有人也需要的话,我找到了解决这个问题的方法。
In the CustExpListView
你需要重写的类onMeasure
method.
本教程展示了如何这样做:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec(960, MeasureSpec.AT_MOST);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(600, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
然而,这只会使用适合文本所需的宽度,因此不会突出显示整个栏。要解决此问题,请更改onMeasure
方法:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
widthMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
这总是将宽度分配给 widthMeasureSpec 的宽度,如果您设置了LayoutParams
to MATCH_PARENT
将填满你的视野。高度使用Integer.MAX_VALUE
以便第二个可扩展列表可以为其子级使用尽可能多的空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)