我有一个名为CircleView
的自定义组件,我想更改fillColor
中定义的名为attrs.xml
的自定义属性:
<declare-styleable name="CircleView">
<attr name="radius" format="integer" />
<attr name="fillColor" format="color" />
</declare-styleable>
我最初在我的布局XML中设置了它,目前看起来像这样(命名空间circleview
被定义为xmlns:circleview="http://schemas.android.com/apk/res-auto"
;当我在XML中定义它时,它工作正常,所以这不应该&#39 ;是一个问题):
<com.mz496.toolkit.CircleView
...
circleview:fillColor="#33ffffff"/>
我可以在我的fillColor
CircleView
中获得View
属性,但是我不知道如何设置其值。
我调查了setBackgroundColor
之类的内容,并寻找其他&#34; set&#34;方法,但我找不到任何方法。我想象了一个像
circle.setAttribute(R.styleable.CircleView_fillColor, "#33ff0000")
答案 0 :(得分:4)
布局中的CircleView
只不过是CircleView
类的一个实例,所以只需在CircleView.java
中添加一个函数:
public void setFillColor(int newColor) {
fillColor = newColor;
}
然后在需要时调用它:
CircleView circle_view = (CircleView) findViewById(R.id.circle_view);
circle_view.setFillColor(0x33ffffff);
circle_view.invalidate();
另请注意,这只会更改内部变量,但您仍需要使用invalidate()
类的View
方法重绘自定义组件,因为只有整个自定义组件才会自动重绘视图被重绘,例如切换片段时(参见:Force a View to redraw itself)。
(当我刚要问的时候,我最后想到了这一点,&#34;我是否需要自己定义?&#34;我自己尝试定义它,并且它有效。)