可通过复写onMeasure()函数实现:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int w_size = MeasureSpec.getSize(widthMeasureSpec); //获取原宽度值
int h_size = MeasureSpec.getSize(heightMeasureSpec); //获取原高度值
int w_mode = MeasureSpec.getMode(widthMeasureSpec); //获取原宽mode值
int h_mode = MeasureSpec.getMode(heightMeasureSpec); //获取原高mode值
int widthMeasureSpec = MeasureSpec.makeMeasureSpec(w_size_new, w_mode); //w_size_new为新设置的宽度值,int型
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(h_size_new, h_mode); //h_size_new为新设置的高度值,int型
super.onMeasure(widthMeasureSpec, heightMeasureSpec); //设置
}
以上: widthMeasureSpec = w_size + w_mode;
heightMeasureSpec = h_size + h_mode;
makeMeasureSpec()用于计算新待设置的数值,与getSize()、getMode()作用相反。
参考:
http://blog.csdn.net/aben_2005/article/details/6415128
http://www.cppblog.com/guojingjia2006/archive/2012/03/27/169214.html
http://blog.csdn.net/jiangyoujishiyou/article/details/8108924