如何在 View OnMeasure 上设置 wrap_content 最小高度?
How to set wrap_content with min height on view OnMeasure?
我为扩展按钮的视图设置了最小高度
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int h = resolveSize(minHeight, heightMeasureSpec);
if (h < minHeight) h = minHeight;
setMeasuredDimension(widthMeasureSpec, h);
rectBG.set(0, 0, MeasureSpec.getSize(widthMeasureSpec), h);
mBgPaint.setShader(
new LinearGradient(0, 0, 0, rectBG.bottom, colorStart, colorEnd, Shader.TileMode.MIRROR));
}
但是当我设置大文本时,我的视图没有扩展。如何处理?
问题是您调用 super.onMeasure(widthMeasureSpec, heightMeasureSpec)
然后尝试执行计算。
您应该依靠调用 super.onMeasure(widthMeasureSpec, heightMeasureSpec)
或者您应该使用 setMeasuredDimension
.
除非您的 View
存在其他问题,删除 super
调用应该可以解决您的问题。
我为扩展按钮的视图设置了最小高度
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int h = resolveSize(minHeight, heightMeasureSpec);
if (h < minHeight) h = minHeight;
setMeasuredDimension(widthMeasureSpec, h);
rectBG.set(0, 0, MeasureSpec.getSize(widthMeasureSpec), h);
mBgPaint.setShader(
new LinearGradient(0, 0, 0, rectBG.bottom, colorStart, colorEnd, Shader.TileMode.MIRROR));
}
但是当我设置大文本时,我的视图没有扩展。如何处理?
问题是您调用 super.onMeasure(widthMeasureSpec, heightMeasureSpec)
然后尝试执行计算。
您应该依靠调用 super.onMeasure(widthMeasureSpec, heightMeasureSpec)
或者您应该使用 setMeasuredDimension
.
除非您的 View
存在其他问题,删除 super
调用应该可以解决您的问题。