通过 setter 更新 customView 中的颜色

Update color in customView by setter

我有 CustomView,它工作正常。 现在我需要通过代码更改一些项目颜色。 所以这是我的代码:

CustomView cv = new CustomView(mContext);
cv.setItemColor(Color.parseColor("#e77400"));

在我的自定义视图中,我添加了方法:

public void setItemColor(int color){
        mItemColorDefault = color;
        invalidate();
        requestLayout();
    }

但此后什么也没有发生,customView 也没有刷新... 请帮忙解决这个问题。 谢谢!

  1. 除非 CustomView 的大小没有改变,否则不需要调用 requestLayout()。此方法只涉及视图定位更新。
  2. 您必须覆盖 onDraw() 方法,因为它是绘制视图的地方。 invalidate() 方法导致 onDraw() 被调用。 使用 mItemColorDefault 颜色在 onDraw().
  3. 中绘制视图

这里是覆盖了 onDraw() 方法的自定义视图示例:

https://github.com/dawidgdanski/TicTacToe/blob/master/game/src/main/java/pl/dawidgdanski/tictactoe/game/view/TicTacToeView.java

希望这能有所帮助。