android上的自定义视图是否可以仅使文本无效,而不使背景图像无效?
Myandroid上的自定义视图是否可以仅使文本无效,而不使背景图像无效?,android,view,ondraw,invalidation,Android,View,Ondraw,Invalidation,MyCustomView绘制一些多边形,并且标题文本位于视图的中心。在应用程序运行时,我需要经常更改这些视图的标题文本。当然,我可以在设置新文本后使其无效,这样应用程序将重新绘制所有内容—多边形、颜色,最后是新文本—但我只是想知道是否有一种聪明的方法,只使标题文本无效,而不影响所有背景多边形。当前代码如下所示: public CustomView extends View { private Path mPolygon1; private Path mPolygon2;
CustomView
绘制一些多边形,并且标题文本位于视图的中心。在应用程序运行时,我需要经常更改这些视图的标题文本。当然,我可以在设置新文本后使其无效,这样应用程序将重新绘制所有内容—多边形、颜色,最后是新文本—但我只是想知道是否有一种聪明的方法,只使标题文本无效,而不影响所有背景多边形
。当前代码如下所示:
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)
有关详细信息,请使用invalidate(Rect)或invalidate(左、上、右、下)
有关详细信息非常感谢。我不知道这种方法存在。有时候,一个对象有太多的方法,所以很难找到我正在寻找的正确方法……这是Android的问题之一,对我来说也是如此。有很多有用的方法。但是很难记住任何东西。非常感谢。我不知道这种方法存在。有时候,一个对象有太多的方法,所以很难找到我正在寻找的正确方法……这是Android的问题之一,对我来说也是如此。有很多有用的方法。但是很难记住任何东西。