zoukankan      html  css  js  c++  java
  • 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

     

                

  • 相关阅读:
    教你一招用 IDE 编程提升效率的骚操作!
    动态拼接sql语句工具类
    mysql数据建模规范
    分割字符串为数字列表
    linux 配置mysql odbc
    nodejs npm常用命令
    (四)jquery easyui panel window使用
    (三)jquery easyui常用form控件的使用
    (二)jquery easyUI提示框的使用
    (一)jQuery easyUI 环境的搭建
  • 原文地址:https://www.cnblogs.com/jianglijs/p/7495930.html
Copyright © 2011-2022 走看看