如何在 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 调用应该可以解决您的问题。