通过setter

时间:2016-01-30 20:49:23

标签: android android-custom-view setter

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

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

在我的customView i添加方法中:

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

但在此之后没有任何事情发生且customView不刷新... 请帮助解决这个问题。 谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 除非requestLayout()的大小未更改,否则无需致电CustomView。此方法仅涉及定位更新的视图。
  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

    希望这会有所帮助。