在一个界面中既有普通控件(如:image) , 还有 listview 或 gridview , 那么如果记录比较多, 就会超出默认高度,但是无法滚动 . 解决方案如下:
1. 继承listview或gridview , 重写onMeasure方法
2. 使用scrollview包裹自定义的 listview或gridview
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
public class InnerListView extends ListView {
public InnerListView(Context context) {
super(context);
}
public InnerListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public InnerListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical"
android:fadingEdge="vertical">
<org.photo.InnerListView
android:id="@+id/review_msg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="@android:color/transparent"
android:divider="@color/light_gray"
android:dividerHeight="1px"
android:drawSelectorOnTop="false" >
</org.photo.InnerListView>
</ScrollView>
</LinearLayout>
参考:
http://trinea.iteye.com/blog/1084707
http://my.oschina.net/xsjayz/blog/95113