ListView嵌套ListView的学习
in Android with 0 comment
Read: 676

ListView嵌套ListView的学习

in Android with 0 comment

在app开发中,我们经常会遇到列表内嵌列表的时候,那么最基本的开发形式就是ListView嵌套ListView
虽然google在I/O大会推出RecyclerView,但是ListView的地位还是很值得我们初学者去学习的
本篇博客,小编将记录ListView嵌套ListView的学习

分析

ListView嵌套ListView,顾名思义:父ListView的Item已经包含一个ListView,但是这个ListView应该具有自适应高度的属性,那么说我们需要对父Item的ListView进行高度的重绘

代码

public 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) {

         /**
         *  重新测量listview的高度
         *  makeMeasureSpec(int size, int mode)
         *  测量大小,测量模式
         *  声明:这个size要足够大,因为我们的测量模式为AT_MOST
         */
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                    MeasureSpec.AT_MOST);
            super.onMeasure(widthMeasureSpec, expandSpec);

    }
}

这个ListView用于子ListView , 父ListView使用默认的ListView样式即可

关于AT_MOST的解释: 即最大值模式,当我们的layout_width属性或者layout_height属性指定为wrap_content时,控件大小一般随着控件的子控件或内容的变化而变化,此时空间的尺寸只要不超过父控件允许的最大尺寸即可

Responses