需要重写的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); } }
xml 嵌套
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:openxu="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#f2f5ff" android:fitsSystemWindows="false" android:orientation="vertical"> <com.assistant.widget.TitleBar android:id="@+id/index_title_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top"/> <!-- <androidx.swiperefreshlayout.widget.SwipeRefreshLayout--> <!-- android:layout_width="match_parent"--> <!-- android:id="@+id/main_refresh"--> <!-- android:layout_height="0dp"--> <!-- android:layout_weight="1">--> <ScrollView android:layout_width="match_parent" android:id="@+id/main_scroll" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_marginTop="@dimen/normal_20dp" android:layout_marginLeft="@dimen/normal_20dp" android:layout_marginRight="@dimen/normal_20dp" android:paddingTop="@dimen/normal_100dp" android:paddingLeft="@dimen/normal_80dp" android:paddingBottom="@dimen/normal_20dp" android:paddingRight="@dimen/normal_80dp" android:background="@drawable/index_bg" android:layout_height="wrap_content"> <com.assistant.myapplication.CustomCalendar android:id="@+id/cal" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" openxu:mTextColorPreNull="@color/gray" openxu:mTextSizeDay="@dimen/normal_55sp" openxu:mTextSizeMonth="@dimen/normal_55sp" openxu:mTextSizePre="@dimen/normal_32sp" openxu:mTextSizeWeek="@dimen/normal_50sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:id="@+id/list" android:background="@drawable/bg_index_list" android:layout_marginRight="@dimen/normal_40dp" android:layout_marginLeft="@dimen/normal_40dp" android:layout_marginBottom="@dimen/normal_40dp" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:padding="@dimen/normal_40dp" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:text="2020年07月08日" android:id="@+id/curdate" android:textSize="@dimen/normal_45sp" android:layout_height="wrap_content"/> <TextView android:layout_width="0dp" android:layout_weight="1" android:layout_marginLeft="@dimen/normal_20dp" android:textSize="@dimen/normal_45sp" android:text="" android:id="@+id/week" android:layout_height="wrap_content"/> <TextView android:layout_width="wrap_content" android:layout_marginRight="@dimen/normal_10dp" android:textSize="@dimen/normal_45sp" android:text="今日共有" android:layout_height="wrap_content"/> <TextView android:layout_width="wrap_content" android:textSize="@dimen/normal_45sp" android:layout_height="wrap_content" android:textColor="@color/red" android:id="@+id/sumnum" android:text="0"/> <TextView android:layout_width="wrap_content" android:layout_marginRight="@dimen/normal_10dp" android:textSize="@dimen/normal_45sp" android:text="课时" android:layout_height="wrap_content"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginLeft="@dimen/normal_20dp" android:layout_marginRight="@dimen/normal_20dp" android:background="@color/colorPrimary"/> <com.assistant.util.ListViewForScrollView android:layout_width="match_parent" android:id="@+id/curlist" android:divider="@drawable/line" android:scrollbars="none" android:layerType="software" android:dividerHeight="5dp" android:paddingLeft="@dimen/normal_40dp" android:paddingRight="@dimen/normal_40dp" android:layout_height="match_parent"/> <TextView android:layout_width="match_parent" android:textAlignment="center" android:id="@+id/zanwu" android:textSize="@dimen/normal_42sp" android:layout_marginTop="@dimen/normal_100dp" android:layout_marginBottom="@dimen/normal_100dp" android:text="" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout> </ScrollView>> <!-- </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>--> </LinearLayout> 这样在数据少的时候,可以正常展示,但是数据多了,就不显示,去掉 ListViewForScrollView
android:layerType="software"这个时,可以正常显示了