今天这个项目的源码主要来自:https://blog.csdn.net/chengxu_hou/article/details/70344759
由于我自身项目需求我需要在子控件里添加一个litstView,但listview里面只显示出来第一个Item如下图:
那是因为嵌套ListView会无法正确计算高度,导致只显示一个item的高度。
最简单的方法就是重写listview如下图:
/** * Description:自定义listView(防止listview作为子控件时item显示不出来) * AUTHOR: Champion Dragon * created at 2018/4/24 **/ class MyListView extends ListView { public MyListView(Context context) { super(context); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); } public MyListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //重新测量空间(这里是高度) @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { heightMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } }关于
MeasureSpec中三种模式:UNSPECIFIED,AT_MOST,EXACTLY
解决问题后的显示: