Android 解决 ScrollView嵌套ListView、GridView冲突显示不全的最快实现

在Android开发中,ScrollView与ListView、GridView的嵌套使用经常都会用到,但是如果仅仅是纯粹的嵌套,ListView和GridView就会出现显示不全的情况,因为ScrollView和ListView、GridView自己都能滚动...一遇到这问题,马上能想到的方法就是在设置适配器后,手动去测量子控件高度,再重新设置ListView的高度。好吧,个人觉得这个方法略麻烦,其实还可以通过自定义控件去实现,以ListView为例,上代码~

package cn.yyh.oa.view;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

/**
 * 自定义ListView,<span style="font-family: Arial, Helvetica, sans-serif;">解决ScrollView嵌套冲突问题</span>
 * 
 * @author king
 * 
 */

public class NoScrollListView extends ListView {
	public NoScrollListView(Context context) {
		super(context);

	}

	public NoScrollListView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	/** 
         * 设置不滚动 
         */
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
				MeasureSpec.AT_MOST);
		super.onMeasure(widthMeasureSpec, expandSpec);
	}
}

在布局中,把自定义ListView引入~

<span style="white-space:pre">		</span><cn.yyh.oa.view.NoScrollListView
                    android:id="@+id/lv_comments"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:divider="@null"
                    android:listSelector="@android:color/transparent" >
                </cn.yyh.oa.view.NoScrollListView>

GridView也是同样的原理,重写onMeasure函数,这里就不再贴代码了。

但是,这个方法虽然简单,却也有一个弊端,就是ScrollView中,如果有其他的View,页面默认默认显示的首项是ListView,所以我们还得手动设置一下,把ScrollView移动到顶端。顺便说一句,相比起手动去测量子控件高度等其他方法,这个方法更好,因为它代码更少,同时保留了ListView的所有方法。

sv = (ScrollView) findViewById(R.id.sv);
sv.smoothScrollTo(0, 0);







评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值