当ScrowView嵌套listView时,而且在listview上端还有内容的时候,导致listview加载完数据后,自动滚动到最顶端的问题,以下是解决方案,即在外层再加一个LinearLayout ,就能解决,以下是实例
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_backgroud"
android:descendantFocusability="blocksDescendants"
android:id="@+id/ll_fragment_home">
<ScrollView
android:id="@+id/sv_histrack"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.mxnavi.drivemanager.demo.ui.MyListView
android:id="@+id/lv_ranking"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:listSelector="@drawable/normal_list_bg"
android:divider="@color/list_divider"
android:dividerHeight="1dip"
android:gravity="center"
android:scrollbars="none"
android:background="@color/list_backgroud"
>
</com.mxnavi.drivemanager.demo.ui.MyListView>
</ScrollView>
</LinearLayout>
```
MyListView 的代码:
```
public class MyListView extends ListView {
public MyListView(Context context)
{
super(context);
}
public MyListView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int expandSpec= View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
View.MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}