ListView中嵌套GridView,ListView的问题汇总

来源:互联网 发布:教师网络研修的好处 编辑:程序博客网 时间:2024/06/05 15:28

GridView只显示一行:

//自定义控件,重写他的onMeasure方法
public class MyGridView extends GridView {    public MyGridView(Context context) {        super(context);        // TODO Auto-generated constructor stub    }    public MyGridView(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub    }    public MyGridView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        // TODO Auto-generated constructor stub    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        // TODO Auto-generated method stub        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, expandSpec);    }}

ListView只显示一行

//使用下边的工具类,计算子布局中listView的onMeasure,因为RelativeLayout没有onMeasure方法,故子布局中不能包含相对布局public class ListViewUtil {    /**     * 测量listView高度方法     * @param listView     */    public static void setListViewHeightBasedOnChildren(ListView listView) {        ListAdapter listAdapter = listView.getAdapter();        if (listAdapter == null) {            // pre-condition            return;        }        int totalHeight = 0;        for (int i = 0; i < listAdapter.getCount(); i++) {            View listItem = listAdapter.getView(i, null, listView);            listItem.measure(0, 0);            totalHeight += listItem.getMeasuredHeight();        }        ViewGroup.LayoutParams params = listView.getLayoutParams();        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));        listView.setLayoutParams(params);    }}


0 0
原创粉丝点击