如何在运行时更改自定义视图颜色?

时间:2014-11-05 20:18:39

标签: 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());
        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()时,为什么形状不会改变颜色?感谢。

2 个答案:

答案 0 :(得分:4)

你需要调用invalidate,以便视图知道它需要重绘

答案 1 :(得分:0)

假设您的对象是, 岛屿岛屿=新岛屿(背景);

要更新视图,您可以调用island.onDraw() 要么 island.invalidate();

如果要从另一个线程更改此设置,则可以使用postInvalidate()方法。

相关问题