解决ScrollView嵌套ListView和GridView冲突的方法

来源:互联网 发布:数据加密的作用 编辑:程序博客网 时间:2024/04/28 00:26
  1. public class MyListView extends ListView {  
  2.         public MyListView(Context context) {  
  3.                 super(context);  
  4.         }  
  5.         public MyListView(Context context, AttributeSet attrs) {  
  6.                 super(context, attrs);  
  7.         }  
  8.         public MyListView(Context context, AttributeSet attrs, int defStyle) {  
  9.                 super(context, attrs, defStyle);  
  10.         }  
  11.         @Override  
  12.         protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
  13.                 int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,  
  14.                                 MeasureSpec.AT_MOST);  
  15.                 super.onMeasure(widthMeasureSpec, expandSpec);  
  16.         }  
  17. }  
  18.   
  19.   
  20.    
  21. public class MyGridView extends GridView {     
  22.     private boolean haveScrollbar = true;     
  23.     public MyGridView(Context context) {     
  24.         super(context);     
  25.     }     
  26.     public MyGridView(Context context, AttributeSet attrs) {     
  27.         super(context, attrs);     
  28.     }     
  29.     public MyGridView(Context context, AttributeSet attrs, int defStyle) {     
  30.         super(context, attrs, defStyle);     
  31.     }     
  32.     /**    
  33.      * 设置是否有ScrollBar,当要在ScollView中显示时,应当设置为false。 默认为 true    
  34.      *     
  35.      * @param haveScrollbars    
  36.      */     
  37.     public void setHaveScrollbar(boolean haveScrollbar) {     
  38.         this.haveScrollbar = haveScrollbar;     
  39.     }     
  40.     @Override     
  41.     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {     
  42.         if (haveScrollbars == false) {     
  43.             int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);    
  44.             super.onMeasure(widthMeasureSpec, expandSpec);     
  45.         } else {     
  46.             super.onMeasure(widthMeasureSpec, heightMeasureSpec);     
  47.         }     
  48.     }     
  49. }  
0 0