Scrollview 与 listview 冲突解决?

方法一:核心思想(事件的分发):使用dispatchTouchEvent来分发MotionEvent,将事件处理交给listview(或者GridView)   如:   
        if(event.getAction==MotionEvent.Action_Move){    
            listview.disPatchTouchEvent(event).//交给listview处理   
        }   
    方法二:listview或者GridView中的子item数量不多时,可以选择全部显示,而显示的具体高度,自定义listview或者Gridview,重写View的onMeasure方法,重新计算高度:int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);     
    Integer.MAX_VALUE >> 2:表示父布局给的参考的大小无限大。(listview无边界)
    MeasureSpec.AT_MOST:表示根据布局的大小来确定listview最终的高度,也就是有多少内容就显示多高。   
    
    MeasureSpec:一个MeasureSpec封装了父布局对子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求。一个MeasureSpec由大小和模式组成。它的三种模式(Mode):UNSPECIFIED(未指定,父布局不添加任何的要求,子布局可以是任何的大小);EXACTLY(完全的,由父布局完全决定大小);AT_MOST(至多, The child can be as large as it wants up to the specified size. 子布局可以达到最大)。 

    注意:但是要注意的是,子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值