ListView嵌套GridView

在Android开发中,由于嵌套ScrollView的限制,ListView和GridView无法直接组合使用。本文介绍了如何自定义一个全显式的GridView,并通过重写onMeasure方法避免滚动冲突。同时,为了解决点击事件的问题,可以在ListView item的XML中设置`android:descendantFocusability="blocksDescendants"`,并在Adapter中禁用GridView的点击,以确保ListView的点击事件正常工作。
摘要由CSDN通过智能技术生成

在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中,不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动事件,导致只显示一到两行数据。那么就换一种思路,首先让子控件的内容全部显示出来,禁用了它的滚动。如果超过了父控件的范围则显示父控件的scrollbar滚动显示内容,具体的方法是:

自定义GridView组件,继承自GridView。重载onMeasure方法:

public class NoScrollGridView extends GridView { 
	public NoScrollGridView(Context context) { 
		super(context); 	} 
	public NoScrollGridView(Context context, AttributeSet attrs) { 
		super(context, attrs); 
	} 

	/**
	 * 设置不滚动 
	 * 
	 * 其中onMeasure函数决定了组件显示的高度与宽度;
	 * makeMeasureSpec函数中第一个函数决定布局空间的大小,第二个参数是布局模式
	 * MeasureSpec.AT_MOST的意思就是子控件需要多大的空间就扩展到多大的空间
	 * 同样的道理,ListView也适用
	 */
	@Override 
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 
		super.onMeasure(wi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值