关于ScrollView嵌套ListView和GridView最常见的两种问题

在Android开发中,ScrollView常用于嵌套ListView或GridView以实现复杂布局的滑动效果。然而,这样做会引发显示问题,如只显示部分列表项。解决这个问题的一种方法是对ListView进行自定义,重写onMeasure方法以正确计算每个Item的高度。这有助于避免显示不全导致的空白区域,从而确保界面的完整呈现。

在Android开发中ListView和GridView、RecyclerView的使用是不可避免的,但是这些控件又只能以列表的形式来展示,这样就有很大的局限性,好在Android提供了ScrllView来进行多空间组合,实现滑动的效果,说以ScrllView嵌套这些布局已经不可避免。

同样是滑动界面,这样就会出现冲突,今天就来说说ScrllView嵌套这些布局最经常需要解决的问题;

1、ScrllView嵌套ListView会出现只显示一行Iten的问题,这样就很焦灼了啊,显示不完全其他地方是空白。(我觉得产品经理看到会打死我,所以还是要账号解决办法啊)

解决办法其实很简单:自定义ListView重新计算每一个Item的高度;

自定义ListView重新onMeasure方法:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
}
这样就解决了Lis他View显示不完全的问题。
    2、ScrllView嵌套还会出现的问题是,自定义ListView之后,可以完全显示,但是如果我们在ListView上面添加一个Viewpager的
话(当然ViewPager只是举个例子,你可能会添加其他的控件),我们在页面加载好之后会发现出现在ListView的位置,而ViewPager测会
被滑出屏幕,这样就很僵硬啊!
    解决办法:在ScrllView的父类布局的XML中添加:
	android:focusable="true"
	android:focusableInTouchMode="true"
   或者在代码中添加是设置listView:
  	 listView.setFocusable(false);
   之所以出现这种情况是因为页面加载进来之后焦点会聚焦在ListView上面,我们只需要取消ListView的焦点,或者 
把焦点聚焦在S从rollView上面即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值