今天这个项目的源码主要来自: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
解决问题后的显示: