方法1.自定义一个类继承自ListView,通过重写其onMeasure方法,达到对ScrollView适配的效果。
- 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);
- }
- }
- 此种方法item布局必须是LinearLayout 不然无法onMeasure 并且 界面会自动回弹到listView的顶部
在一次偶然中 发现界面中有edittext变不会弹,猜想是由于edittext获取了焦点的原因,经测试,在scrollview上布局中给它设置焦点边不会回弹
android:focusable="true"
android:focusableInTouchMode="true"