MultiLevel ExpandableListView 未正确突出显示

2024-01-15

我正在创建一个自定义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(使用前将#替换为@)

MultiLevel ExpandableListView 未正确突出显示 的相关文章

随机推荐