大飞

大飞 关注TA

挑战一切!

大飞

大飞

关注TA

挑战一切!

  •  世界的顶端
  • 混口饭吃
  • 写了333,609字

该文章投稿至Nemo社区   Android  板块 复制链接


自定义控件之scrollview嵌套gridview不显全问题

发布于 2016/01/23 23:32 1,157浏览 0回复 1,126

需要重新测量高度

package com.zwhy.touyuan.widge;  import android.content.Context; import android.util.AttributeSet; import android.widget.GridView;  /**  * @auther JQ  */ public class NoScrollGridView extends GridView{ public NoScrollGridView(Context context) { super(context);  } public NoScrollGridView(Context context, AttributeSet attrs) { super(context, attrs);  } /**  * 此方法用于测量控件的高宽  */  @Override  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // 有三种布局模式:  // EXACTLY: 当布局中用match_parent或写死尺寸大小时,使用该模式  // AT_MOST: 当布局中用wrap_content时,使用该模式  // UNSPECIFIED: 此模式暂时未用到   // 指定GridView可以显示的最大高度,一般来说是不会达到此最大值的。  // [注意]:  // 该值只能为30位以内的数,不能指定为整数最大值;  // 因为Android用了一个32位整数来记录布局模式和布局尺寸两个信息,  // 其中最高两位用来记录布局模式,剩余的低30位用来记录布局尺寸大小。  int maxHeight = Integer.MAX_VALUE >> 2 ; // 1000000;   // 重新指定GridView的布局模式为包裹内容(AT_MOST模式),也就是内容有多高就显示多高,  // 这样GridView也就不会再有滚动的效果了  int heightMeasureSpec2 = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);  super.onMeasure(widthMeasureSpec, heightMeasureSpec2);   // 打印整数所描述的信息:布局模式和布局尺寸  String info = MeasureSpec.toString(heightMeasureSpec2);  }
}

本文标签
 {{tag}}
点了个评