是否可以仅使文本无效,而不是 android 上自定义视图上的背景图像?

Is it possible to invalidate Text only, but not background image on a custom View on android?

我的CustomView画了一些多边形,title text位于视图的中心。随着应用程序的运行,我需要经常更改这些视图的标题文本。当然,我可以在设置新文本后使应用程序重新绘制所有内容 - 多边形、颜色,最后是新文本 - 但我只是想知道是否有一种聪明的方法只使标题文本无效,而保留所有背景polygons 未受影响。当前代码如下所示:

public CustomView extends View {

    private Path mPolygon1;
    private Path mPolygon2;
    // .. more polygons

    private String mTitleText;

    @Override
    protected void onDraw(Canvas canvas) {

        // Draws all images
        canvas.drawPath(mPolygon1, mPaint);
        canvas.drawPath(mPolygon2, mPaint);
        // ... more polygon drawing

        canvas.drawText(mTitleText, 0, mTitleText.length(), mTextPaint);
    }

    public void setTitle(String title) {
        mTitleText = title;
        invalidate();           // more clever way????
    }
}

您可以使用 invalidate(Rect) 或 invalidate(left, top, right, bottom)

Here is a link了解更多详情