0

我试图避免使用 rgb 值,所以这个方法:

public LineAndPointFormatter(Integer lineColor, Integer vertexColor, Integer fillColor) {
     this(lineColor, vertexColor, fillColor, FillDirection.BOTTOM);
}

我应该通过的地方:

LineAndPointFormatter lpf = new LineAndPointFormatter(Color.rgb(0, 0, 200), null, Color.rgb(0, 0, 80));

工作得很好,但我想使用这种方法:

public LineAndPointFormatter(Context ctx, int xmlCfgId) {
    // prevent configuration of classes derived from this one:
    if (getClass().equals(LineAndPointFormatter.class)) {
        Configurator.configure(ctx, this, xmlCfgId);
    }
}

所以我可以使用 colors.xml 资源 ID 并通过设置“colorID”然后将其传递来管理所有图形颜色(colorID 在日志中显示为 -65536 或某些变化取决于 )。这段代码在一个扩展片段的类中,所以我想知道我是否得到了正确的上下文..

以下是我尝试过的一些事情:

LineAndPointFormatter seriesFormat = new LineAndPointFormatter(getActivity().getApplicationContext(), getResources().getColor(R.color.blue));

LineAndPointFormatter seriesFormat = new LineAndPointFormatter(getActivity().getApplicationContext(), colorID);

LineAndPointFormatter seriesFormat = new LineAndPointFormatter(getActivity().getApplicationContext(), getResources().getColor(colorID));

等等..

我会保留插件,但如果有人使用 LineAndPointFormatter 的上下文版本,也许你遇到了类似的问题?

异常如下所示:

05-14 12:47:25.917: E/AndroidRuntime(14023): android.content.res.Resources$NotFoundException: 资源 ID #0xff0000ff

我必须将我的颜色重写为#ff0000ff 格式吗?

编辑:添加了 colors.xml

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="transparent_white">#66FFFFFF</color>
<color name="yellow">#FFFF00</color>
<color name="fuchsia">#FF00FF</color>
<color name="red">#FF0000</color>
<color name="silver">#C0C0C0</color>
<color name="gray">#808080</color>
<color name="olive">#808000</color>
<color name="purple">#800080</color>
<color name="maroon">#800000</color>
<color name="aqua">#00FFFF</color>
<color name="lime">#00FF00</color>
<color name="teal">#008080</color>
<color name="green">#008000</color>
<color name="blue">#0000ff</color>
<color name="navy">#000080</color>
<color name="black">#000000</color>
</resources>
4

1 回答 1

2

我认为问题在于您使用的 xml 资源包含与“配置器”配置的对象无关的元素。配置器使用反射来确定如何将您的 xml 值映射到关联对象的成员。为此,重要的是 xml 文件包含正在配置的对象的实际成员的元素,并且这些元素与这些成员共享相同的名称。

在上面的示例中,您尝试使用 xml 文件配置 LineAndPointFormatter,该文件包含名称为银色、灰色等不存在的元素。相反,您应该将配置存储在一个单独的 xml 文件中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<config vertexPaint.color="#00FF00"
        linePaint.color="#00FF00"
        linePaint.strokeWidth="2dp"/>

一旦你定义了这个文件,你可以尝试的东西(我没有亲自尝试过,但假设它应该可以工作)是在 colors.xml 中引用你的值,这样当你调整灰色的定义时,它是全局调整。

于 2013-05-15T17:41:52.937 回答