ScrollView中ListView高度不匹配解决方案---最简单的方式

时间:2023-01-23 14:31:42

自定义可适应ScrollView的ListView—最简单的方式

1.步骤

  • 1.自定义可适应ScrollView的ListView,自动测量其高度

    • 自定义一个类继承自ListView,通过重写其onMeasure方法,达到对ScrollView适配的效果。—设置不滚动?
      • protected void onMeasure(iint widthMeasureSpec, int heightMeasureSpec) {}
      • 测量方法中里面写入int expandSpec = MeasureSpec.makeMeasureSpec(
        Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
      • 调用父类的onMeasure方法 super.onMeasure(widthMeasureSpec, expandSpec);
  • 2.此时默认ScrollView显示的首项是ListView,需要手动把ScrollView滚动至最顶端。

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

2. 代码示例 (主要代码)

`
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);
}
}
`