ScrollView+ListView滚动冲突,没有滑动效果 解决办法

来源:互联网 发布:网络教育的学费多少 编辑:程序博客网 时间:2024/05/18 00:40

转载地址:http://www.2cto.com/kf/201505/403105.html

一种解决办法:

有网友试过,将ListView的layout_height设置为一个定值,比如说400dp,就可以有滑动的效果。 但是ListView只能显示部分元素,这不是我们想要的结果。 所以就需要一种方法可以根据ListView中Item数量,动态设置ListView的height,使全部item得到显示。

最终解决方法:

    /**     * scrollview与listview合用会出现listview只显示一行多点。此方法是为了定死listview的高度就不会出现以上状况     * 算出listview的高度     */    public static void setListViewHeight(ListView listView) {        ListAdapter listAdapter = listView.getAdapter();        if (listAdapter == null) {            return;        }        int totalHeight = 0;        for (int i = 0; i < listAdapter.getCount(); i++) {            View listItem = listAdapter.getView(i, null, listView);            listItem.measure(1, 1);            totalHeight += listItem.getMeasuredHeight();        }        ViewGroup.LayoutParams params = listView.getLayoutParams();        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)) + listView.getPaddingTop() + listView.getPaddingBottom();        listView.setLayoutParams(params);    }
第二种解决办法:
重写onmeasure方法
 
@Override    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        //加上下面的话即可实现listview在scrollview中滑动        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);        System.out.println("expandSpec = " + expandSpec);        super.onMeasure(widthMeasureSpec, expandSpec);    }

0 0
原创粉丝点击