首先需要自定义ListView
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 defStyleAttr) { super(context, attrs, defStyleAttr); } public MyListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } /** *重写该方法,达到使ListView适应ScrollView的效果 */ @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, mExpandSpec); } }
布局文件
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:fillViewport="true"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:focusableInTouchMode="true"
android:focusable="true"
android:descendantFocusability="beforeDescendants"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:background="@color/gray_background"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_height="40dp">
<TextView
android:layout_width="wrap_content"
android:text="品名:"
android:gravity="center_vertical"
android:textColor="@color/gray_font"
android:layout_height="match_parent" />
<TextView
android:layout_width="wrap_content"
android:text="规格"
android:textColor="@color/gray_font"
android:gravity="center_vertical"
android:layout_height="match_parent" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@drawable/dropdown_gray"
/>
</LinearLayout>
<MyListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</MyListView>
</LinearLayout>
</ScrollView>
其中 android:fillViewport="true" 让listview 填充屏幕
而下面这3行,是防止自动跳转到listview的第一行
android:focusableInTouchMode="true"
android:focusable="true"
android:descendantFocusability="beforeDescendants"