解决ScrollView中嵌套ListView滚动效果冲突问题

本文介绍了解决Android中ListView或GridView无法滚动的问题。通过继承ListView并重写onMeasure方法或者使用ScrollView包裹自定义的ListView实现滚动功能。

在一个界面中既有普通控件(如: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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值