ScrollView中ListView显示不全解决方法

自定义一个类继承自ListView,通过重写其onMeasure方法,达到对ScrollView适配的效果。


下面是继承了ListView的自定义类:


import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
public class ListViewForScrollView extends ListView {
    public ListViewForScrollView(Context context) {
        super(context);
    }
    public ListViewForScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public ListViewForScrollView(Context context, AttributeSet attrs,
        int defStyle) {
        super(context, attrs, defStyle);
    }
    @Override
    /**
     * 重写该方法,达到使ListView适应ScrollView的效果
     */
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
        MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

三个构造方法完全不用动,只要重写onMeasure方法,需要改动的地方比较少。


在xml布局中和Activty中使用的ListView改成这个自定义ListView就行了。

这个方法有一个同样的毛病,就是默认显示的首项是ListView,需要手动把ScrollView滚动至最顶端。


  • sv = (ScrollView) findViewById(R.id.act_solution_4_sv);
  • sv.smoothScrollTo(0, 0);


你可能感兴趣的:(Android)