经过调查,我发现了这个功能:
/**
* Set view dimensions based on layout params
*
* @param mode
* @param size
* @param drawableWidth
* @return
*/
private int setViewSize(int mode, int size, int drawableWidth) {
int viewSize;
switch (mode) {
case MeasureSpec.EXACTLY:
viewSize = size;
break;
case MeasureSpec.AT_MOST:
viewSize = Math.min(drawableWidth, size);
break;
case MeasureSpec.UNSPECIFIED:
viewSize = drawableWidth;
break;
default:
viewSize = size;
break;
}
return viewSize;
}
稍后将由用户onMeasure计算viewWidth,viewHeight
用于
setMeasuredDimension(viewWidth, viewHeight);
改成setViewSize这个给了我想要的效果:
/**
* Set view dimensions based on layout params
*
* @param mode
* @param size
* @param drawableSize
* @return
*/
private int setViewSize(int mode, int size, int drawableSize) {
int viewSize;
switch (mode) {
case MeasureSpec.EXACTLY:
viewSize = (int) (size*Math.max(normalizedScale, 1.0));
break;
case MeasureSpec.AT_MOST:
viewSize = (int) (size*Math.max(normalizedScale, 1.0));
break;
case MeasureSpec.UNSPECIFIED:
viewSize = drawableSize;
break;
default:
viewSize = (int) (size*Math.max(normalizedScale, 1.0));
break;
}
return viewSize;
}
我将名称更改drawableWidth为drawableSize代码潮汐,因为该函数也用于计算宽度和高度。
希望有人会觉得这很有帮助。