项目中用到了ScrollView结合GridView,出现了很多问题,这里先拿ListView开刷。想要实现的效果如下:
但是实现的效果却如下:
崩溃了。布局是这样的:
- <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- >
- <ListView
- android:id="@+id/list_view"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" >
- </ListView>
- </ScrollView>
加入给ScrollView添加下面的属性:
- android:fillViewport="true"
运行界面是出来,但是界面怎么都拖不动,解决的办法就是自定义ListView:
- package com.example.uilistviewtest;
- import android.content.Context;
- import android.util.AttributeSet;
- import android.widget.ListView;
- public class MyListView extends ListView{
- public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- }
- public MyListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public MyListView(Context context) {
- super(context);
- }
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec, expandSpec);
- }
- }
- <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- >
- <com.example.uilistviewtest.MyListView
- android:id="@+id/list_view"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" >
- </com.example.uilistviewtest.MyListView>
- </ScrollView>
再次运行,就解决问题了。