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 として表示されるか、または に応じてそのバリエーションとして表示されます)。このコードは Fragment を拡張しているクラス内にあるため、Context が正しく取得されているかどうか疑問に思っています..

ここに私が試したことのいくつかがあります:

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 の Context バージョンを使用している場合、同様の問題に遭遇した可能性がありますか?

例外は次のようになります。

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 リソースを使用していることだと思います。Configurator は、リフレクションを使用して、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 に答える