• ScrollView内嵌ListView,ListView显示不全及滑动冲突的问题


    对于ScrollView内嵌ListView,我们需要解决两个问题。

    1.ListView在layout_height为以下三种任何一种情况的时候,仅一个item可见的问题。

        wrap_content

                  match_parent

        0dp+ layout_weight = 1

    解决方案:

      1.给ListView设置固定height。

      2.继承ListView重写onMeasure().如

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int size = MeasureSpec.getSize(heightMeasureSpec);
    int mode = MeasureSpec.getMode(heightMeasureSpec);
    Log.d(TAG, "onMeasure size = " + size + " mode = " + mode);
    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 3, MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec,expandSpec );
    }

    2.ListView内的元素无法滑动的问题。

    解决方案

     1 public class InnerListview extends ListView {  
     2     public InnerListview(Context context) {  
     3         super(context);  
     4     }  
     5   
     6     public InnerListview(Context context, AttributeSet attrs) {  
     7         super(context, attrs);  
     8     }  
     9   
    10     public InnerListview(Context context, AttributeSet attrs, int defStyle) {  
    11         super(context, attrs, defStyle);  
    12   
    13     }  
    14   
    15     @Override  
    16     public boolean onInterceptTouchEvent(MotionEvent ev) {  
    17         switch (ev.getAction()) {  
    18         // 当手指触摸listview时,让父控件交出ontouch权限,不能滚动  
    19         case MotionEvent.ACTION_DOWN:  
    20             setParentScrollAble(false);  
    21         case MotionEvent.ACTION_MOVE:  
    22             break;  
    23         case MotionEvent.ACTION_UP:  
    24         case MotionEvent.ACTION_CANCEL:  
    25             // 当手指松开时,让父控件重新获取onTouch权限  
    26             setParentScrollAble(true);  
    27             break;  
    28   
    29         }  
    30         return super.onInterceptTouchEvent(ev);  
    31   
    32     }  
    33   
    34     // 设置父控件是否可以获取到触摸处理权限  
    35     private void setParentScrollAble(boolean flag) {  
    36         getParent().requestDisallowInterceptTouchEvent(!flag);  
    37     }  
    38   
    39 }  

    http://blog.csdn.net/zhaokaiqiang1992/article/details/38585547

     

                

  • 相关阅读:
    联想IdeaPad品牌出炉 三款笔记本亮相
    [推荐]2008年必不可少的20个网络产品
    微软公开.NET Base Classes源代码
    [共享一下]Head.First.设计模式.中文版
    IT: 蓝牙十岁了
    祝贺“阿来之家”博客正式开通~
    NodeJS安全设计:好吃的草莓味糖果,只给好朋友小红
    NodeJS文件读取:感恩常在抓把糖果,愉悦客人
    NodeJS缓存机制:畅销货,就多囤一点呗
    安装pygame出现is not a supported wheel on this platform解决办法
  • 原文地址:https://www.cnblogs.com/jianglijs/p/7495930.html
Copyright © 2020-2023  润新知