首先需要自定义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"
本文介绍如何通过自定义ListView类实现ListView与ScrollView的完美兼容,解决了ListView在ScrollView中无法正常显示的问题。文章提供了详细的代码示例,包括自定义ListView的实现及布局文件配置。
982

被折叠的 条评论
为什么被折叠?



