Android 如何在运行时更改自定义视图颜色?
我的类定义如下:Android 如何在运行时更改自定义视图颜色?,android,view,drawable,Android,View,Drawable,我的类定义如下: public class Island extends View { private ShapeDrawable mDrawable; public Island(Context context) { super(context); int width = 50; int height = 50; mDrawable = new ShapeDrawable(new OvalShape());
public class Island extends View {
private ShapeDrawable mDrawable;
public Island(Context context) {
super(context);
int width = 50;
int height = 50;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(0, 0, width, height);
}
public void change() {
mDrawable.getPaint().setColor(Color.BLACK);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
当我调用对象上的change()时,为什么形状不会改变颜色?谢谢。您需要调用invalidate以便视图知道它需要重新绘制您需要调用invalidate以便视图知道它需要重新绘制假设您的对象是, 岛屿=新岛屿(上下文) 要更新视图,您可以调用island.onDraw() 或 岛。无效() 如果您正在从另一个线程更改此设置,则可以使用postInvalidate()方法。假设您的对象是, 岛屿=新岛屿(上下文) 要更新视图,您可以调用island.onDraw() 或 岛。无效()
如果您要从另一个线程更改此内容,则可以使用postInvalidate()方法。就是这样,谢谢。以前,我试图在绘图表本身上调用invalidateself(),但在视图上调用invalidate()效果很好。谢谢,就这样,谢谢。以前,我试图在绘图表本身上调用invalidateself(),但在视图上调用invalidate()效果很好。谢谢